SysYTestcases/performance_2022fin/layernorm2.sy
ridethepig 13f3cb710a init
2023-05-16 00:56:56 +08:00

101 lines
1.8 KiB
Plaintext

float myAbs(float x){
if(x<0){
x = -x;
}
return x;
}
float sqrt(float x){
float start = 0;
float end = x;
float mid = (start + end)/ 2;
while(myAbs(mid*mid - x)>0.001){
if(mid*mid > x){
end = mid;
mid = (mid + start)/2;
}
else{
start = mid;
mid = (mid + end)/2;
}
}
return mid;
}
float a[1000][1000];
int main(){
int n;
int i;
int j;
int k;
float sum = 0;
i = 0;
while(i<1000)
{
n = getfarray(a[i]);
if(n!=1000){
return n;
}
i = i + 1;
}
starttime();
k = 0;
while(k<100)
{
float mean[1000];
i = 0;
while(i<1000){
j = 0;
mean[i] = 0;
while(j<1000){
mean[i] = mean[i] + a[i][j];
j = j+1;
}
mean[i] = mean[i] / 1000;
i = i+1;
}
float var[1000];
i = 0;
while(i<1000){
j = 0;
var[i] = 0;
while(j<1000){
var[i] = var[i] + (a[i][j] - mean[i]) * (a[i][j] - mean[i]);
j = j+1;
}
var[i] = var[i] / 1000;
var[i] = sqrt(var[i] + 0.01);
i = i+1;
}
i = 0;
while(i<1000){
j = 0;
while(j<1000){
a[i][j] = (a[i][j] - mean[i])/var[i];
sum = sum + a[i][j];
j = j+1;
}
i = i+1;
}
k = k + 1;
}
i = 0;
while(i<1000){
j = 0;
while(j<1000){
sum = sum + a[i][j];
j = j+1;
}
i = i+1;
}
stoptime();
putfloat(sum);
return 0;
}