rmath.c
来自「redboy for gba 是BPNS为GBA编写的一个小软件。软件的邹形是B」· C语言 代码 · 共 159 行
C
159 行
#include <CsAgb.h>
#include <math.h>
#include <rb_stdio.h>
double power10(double x)
{
return pow(10,x);
}
double abs(double x)
{
return (x<0?0-x:x);
}
int get_int(double x)
{
return (x<0?(-1-(int)abs(x)):(int)x);
}
long str_to_int_num(char *exp)
{
long res=0;
u8 i=0;
u8 flag=0;
if (exp[i]=='-') {flag=1;i++;}
while(exp[i]!='\0')
{
res=res*10+exp[i]-48;
i++;
}
return (flag?0-res:res);
}
double str_to_num(char *exp)
{
u8 i=0;
u8 dot=0;
u8 index=0;
u8 str_len=0;
long int_n=0;
double float_n=0;
int exp_n=0;
double mpow=0.1;
char temp[50];
while (exp[i]!='\0')
{
if (exp[i]=='.') dot=i;
else if(exp[i]=='E' || exp[i]=='e') index=i;
i++;
}
str_len=i;
if (dot>index && index) return 0.0;//出错啦
if (index==0) index=str_len;
if (dot==0) dot=index;
for (i=0;i<dot;i++) temp[i]=exp[i];
temp[dot]='\0';
int_n=str_to_int_num(temp);//获得整数部分
for (i=dot+1;i<index;i++)
{
float_n=float_n+(exp[i]-48)*mpow;
mpow=mpow*0.1;
}
if (index!=str_len)
{
i=index+1;
while (exp[i]!='\0')
{
temp[i-index-1]=exp[i];
i++;
}
temp[i-index-1]='\0';
exp_n=str_to_int_num(temp);
}
if (int_n<0) float_n=int_n-float_n;
else float_n=float_n+int_n;
return float_n*pow(10,exp_n);
}
double max(double x,double y)
{
return x>y?x:y;
}
double min(double x,double y)
{
return x>y?y:x;
}
double aver(double *num,u8 n)
{
u8 i;
double ave=0;
for (i=0;i<n;i++) ave=ave+num[i];
if (n) return ave/n;
return 0;
}
double var(double *num,u8 n)
{
u8 i;
double ex=0,ex2=0;
for (i=0;i<n;i++)
{
ex=ex+num[i];
ex2=ex2+num[i]*num[i];
}
if (n) return ex2/n-ex*ex/(n*n);
return 0;
}
double aver_int(int *num,u8 n)
{
u8 i;
double ave=0;
for (i=0;i<n;i++) ave=ave+num[i];
if (n) return ave/n;
return 0;
}
double var_int(int *num,u8 n)
{
u8 i;
double ex=0,ex2=0;
for (i=0;i<n;i++)
{
ex=ex+num[i];
ex2=ex2+num[i]*num[i];
}
if (n) return ex2/n-ex*ex/(n*n);
return 0;
}
void sort(double *num,u8 n)
{
u8 i,j;
double temp;
u8 max;
for (i=0;i<n-1;i++)
{
max=0;
for (j=0;j<n-i;j++)
{
if (num[max]<num[j]) max=j;
}
temp=num[j-1];
num[j-1]=num[max];
num[max]=temp;
}
}
void sort_int(int *num,u8 n)
{
u8 i,j;
int temp;
u8 max;
for (i=0;i<n-1;i++)
{
max=0;
for (j=0;j<n-i;j++)
{
if (num[max]<num[j]) max=j;
}
temp=num[j-1];
num[j-1]=num[max];
num[max]=temp;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?