#include <stdio.h>
#include <math.h>
#define MAX_INDEX 1604
/* Prototype of functions */
double Red(double, double, double);
double Green(double, double, double);
double Blue(double, double, double);
int main()
{
FILE *fpX, *fpY, *fpZ;
fpX
= fopen("tabrefX.dat","r"); fpY
= fopen("tabrefY.dat","r"); fpZ
= fopen("tabrefZ.dat","r"); double tabrefX[MAX_INDEX];
double tabrefY[MAX_INDEX];
double tabrefZ[MAX_INDEX];
int i;
double resultR[MAX_INDEX];
double resultG[MAX_INDEX];
double resultB[MAX_INDEX];
/* We read all values from files tabrefX.dat, tabrefY.dat and tabrefZ.dat */
/* and ze fill up tabrefX, tabrefY and tabrefZ */
i = 0;
if (fpX != NULL)
{
while(fscanf(fpX
, "%lg\n", &(tabrefX
[i
])) != EOF
) i++;
}
else {
printf("error in file tabrefX.dat \n"); return 0;
}
i = 0;
if (fpY != NULL)
{
while(fscanf(fpY
, "%lg\n", &(tabrefY
[i
])) != EOF
) i++;
}
else {
printf("error in file tabrefY.dat \n"); return 0;
}
i = 0;
if (fpZ != NULL)
{
while(fscanf(fpZ
, "%lg\n", &(tabrefZ
[i
])) != EOF
) i++;
}
else {
printf("error in file tabrefZ.dat \n"); return 0;
}
return 0;
}
double CIE_L(double Y)
{
double var_Y ;
double val_l ;
var_Y = Y/100.000;
{
if (var_Y>0.008856)
{
}
else
{
var_Y = (7.787*var_Y) + (16/116);
}
}
val_l = (116*var_Y) - 16;
return val_l;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxtYXRoLmg+IAojZGVmaW5lIE1BWF9JTkRFWCAxNjA0CgovKiBQcm90b3R5cGUgb2YgZnVuY3Rpb25zICovCmRvdWJsZSBSZWQoZG91YmxlLCBkb3VibGUsIGRvdWJsZSk7CmRvdWJsZSBHcmVlbihkb3VibGUsIGRvdWJsZSwgZG91YmxlKTsKZG91YmxlIEJsdWUoZG91YmxlLCBkb3VibGUsIGRvdWJsZSk7CiAKIAppbnQgbWFpbigpCnsKIAogCiAgICBGSUxFICpmcFgsICpmcFksICpmcFo7CglmcFggPSBmb3BlbigidGFicmVmWC5kYXQiLCJyIik7CglmcFkgPSBmb3BlbigidGFicmVmWS5kYXQiLCJyIik7CglmcFogPSBmb3BlbigidGFicmVmWi5kYXQiLCJyIik7Cglkb3VibGUgdGFicmVmWFtNQVhfSU5ERVhdOwoJZG91YmxlIHRhYnJlZllbTUFYX0lOREVYXTsKCWRvdWJsZSB0YWJyZWZaW01BWF9JTkRFWF07CglpbnQgaTsKCWRvdWJsZSByZXN1bHRSW01BWF9JTkRFWF07Cglkb3VibGUgcmVzdWx0R1tNQVhfSU5ERVhdOwoJZG91YmxlIHJlc3VsdEJbTUFYX0lOREVYXTsKIAogCi8qIFdlIHJlYWQgYWxsIHZhbHVlcyBmcm9tIGZpbGVzIHRhYnJlZlguZGF0LCB0YWJyZWZZLmRhdCBhbmQgdGFicmVmWi5kYXQgKi8KLyogYW5kIHplIGZpbGwgdXAgdGFicmVmWCwgdGFicmVmWSBhbmQgdGFicmVmWiAqLwogCmkgPSAwOwogICAgaWYgKGZwWCAhPSBOVUxMKQogICAgewoJd2hpbGUoZnNjYW5mKGZwWCwgIiVsZ1xuIiwgJih0YWJyZWZYW2ldKSkgIT0gRU9GKQoJICBpKys7CiAKCXByaW50ZigiQ29tcGxldGUgRmlsZSIpOwoJZmNsb3NlKGZwWCk7CiAgICB9CiAgICBlbHNlCXsKICAJCQlwcmludGYoImVycm9yIGluIGZpbGUgdGFicmVmWC5kYXQgXG4iKTsKCQkJcmV0dXJuIDA7CiAgICAJCX0KIAppID0gMDsKICAgIGlmIChmcFkgIT0gTlVMTCkKICAgIHsKCXdoaWxlKGZzY2FuZihmcFksICIlbGdcbiIsICYodGFicmVmWVtpXSkpICE9IEVPRikKCQlpKys7CiAKCXByaW50ZigiQ29tcGxldGUgRmlsZSIpOwoJZmNsb3NlKGZwWSk7CiAgICB9CiAgICBlbHNlCXsKICAJCQlwcmludGYoImVycm9yIGluIGZpbGUgdGFicmVmWS5kYXQgXG4iKTsKCQkJcmV0dXJuIDA7CiAgICAJCX0KIAppID0gMDsKICAgIGlmIChmcFogIT0gTlVMTCkKICAgIHsKCXdoaWxlKGZzY2FuZihmcFosICIlbGdcbiIsICYodGFicmVmWltpXSkpICE9IEVPRikKCWkrKzsKIAoJcHJpbnRmKCJDb21wbGV0ZSBGaWxlIik7CglmY2xvc2UoZnBaKTsKICAgIH0KICAgIGVsc2UJewogIAkJCXByaW50ZigiZXJyb3IgaW4gZmlsZSB0YWJyZWZaLmRhdCBcbiIpOwoJCQlyZXR1cm4gMDsKICAgIAkJfQogcmV0dXJuIDA7Cn0KCgogZG91YmxlIENJRV9MKGRvdWJsZSBZKQogewogZG91YmxlIHZhcl9ZIDsKIGRvdWJsZSB2YWxfbCA7CiAJdmFyX1kgPSBZLzEwMC4wMDA7CiAJCXsKIAkJCWlmICh2YXJfWT4wLjAwODg1NikgCgkJCQl7IAkKCQkJCQl2YXJfWSA9IHBvdyh2YXJfWSwxLzMpOwoJCQkJfQoJCQllbHNlCgkJCQl7CgkJCQkJdmFyX1kgPSAoNy43ODcqdmFyX1kpICsgKDE2LzExNik7CgkJCQl9CiAJCX0KIAl2YWxfbCA9ICgxMTYqdmFyX1kpIC0gMTY7CglyZXR1cm4gdmFsX2w7Cn0KIAkJ