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.
cbmc/codedetect/tests/test_data/c_files/basic_arithmetic.c

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;
}