00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 void DIVSER(int N, float *RM, float *CV, float *RZ)
00015 {
00016 int i;
00017 float BRM, BCV, AV;
00018
00019
00020 BRM = 1.0;
00021 BCV = 1.0;
00022 for(i = 0; i < N; i++)
00023 {
00024 BRM = (RM[i] < BRM? RM[i]: BRM);
00025 BCV = (CV[i] < BCV? CV[i]: BCV);
00026 }
00027
00028
00029 if (BRM < 0.0 || BCV <= 0.0)
00030 {
00031 BRM = 0.0;
00032 AV = 0.0;
00033 for(i = 0; i < N; i++)
00034 {
00035 RZ[i] = RM[i] - CV[i] + 1.0;
00036 AV = AV + RZ[i];
00037 BRM = (RZ[i] < BRM? RZ[i]: BRM);
00038 }
00039 AV = AV/(float)N;
00040
00041 if (BRM < 0.0)
00042 {
00043 AV = 0.0;
00044 for(i = 0; i < N; i++)
00045 {
00046 RZ[i] = RZ[i] - BRM;
00047 AV = AV + RZ[i];
00048 }
00049 AV = AV/(float)N;
00050 }
00051
00052 for(i = 0; i < N; i++)
00053 RZ[i] = RZ[i]/AV;
00054 }
00055 else
00056 {
00057 for(i = 0; i < N; i++)
00058 RZ[i] = RM[i]/CV[i];
00059 }
00060
00061 return;
00062 }