You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
80 lines
1.6 KiB
80 lines
1.6 KiB
/*
|
|
* 基础算术函数测试文件
|
|
* 用于测试LLM生成的基础算术验证规范
|
|
*/
|
|
|
|
#include <limits.h>
|
|
|
|
// 基本加法函数
|
|
int add(int a, int b) {
|
|
return a + b;
|
|
}
|
|
|
|
// 计算两个整数的平均值
|
|
int average(int a, int b) {
|
|
return (a + b) / 2;
|
|
}
|
|
|
|
// 基本乘法函数
|
|
int multiply(int a, int b) {
|
|
return a * b;
|
|
}
|
|
|
|
// 带溢出检查的加法
|
|
int safe_add(int a, int b) {
|
|
// 简单的溢出检查
|
|
if (a > 0 && b > INT_MAX - a) {
|
|
return INT_MAX; // 溢出时返回最大值
|
|
}
|
|
if (a < 0 && b < INT_MIN - a) {
|
|
return INT_MIN; // 下溢时返回最小值
|
|
}
|
|
return a + b;
|
|
}
|
|
|
|
// 计算平方
|
|
int square(int x) {
|
|
return x * x;
|
|
}
|
|
|
|
// 计算立方
|
|
int cube(int x) {
|
|
return x * x * x;
|
|
}
|
|
|
|
// 带边界检查的减法
|
|
int safe_subtract(int a, int b) {
|
|
if (b > 0 && a < INT_MIN + b) {
|
|
return INT_MIN; // 下溢时返回最小值
|
|
}
|
|
if (b < 0 && a > INT_MAX + b) {
|
|
return INT_MAX; // 溢出时返回最大值
|
|
}
|
|
return a - b;
|
|
}
|
|
|
|
// 计算绝对值
|
|
int absolute(int x) {
|
|
return (x < 0) ? -x : x;
|
|
}
|
|
|
|
// 带符号的乘法
|
|
int signed_multiply(int a, int b) {
|
|
int result = a * b;
|
|
// 简单的结果符号检查
|
|
if ((a > 0 && b > 0) || (a < 0 && b < 0)) {
|
|
return (result < 0) ? 0 : result; // 同号应该为正
|
|
} else {
|
|
return (result > 0) ? 0 : result; // 异号应该为负
|
|
}
|
|
}
|
|
|
|
// 计算两个数的最小值
|
|
int minimum(int a, int b) {
|
|
return (a < b) ? a : b;
|
|
}
|
|
|
|
// 计算两个数的最大值
|
|
int maximum(int a, int b) {
|
|
return (a > b) ? a : b;
|
|
} |