Code causing panic / hard reset

I’m using this code to try to convert Kelvin to RGB. Perhaps the math is too heavy? It’s causing a kernel panic.

//Algorithm from http://www.tannerhelland.com/4435/convert-temperature-rgb-algorithm-code/

int temp = tempInKelvin / 100;

if (temp <= 66) {
    answer.red = 255;
    answer.blue = 255;
    answer.green = 99.4708025861 * log(answer.green) - 161.1195681661;
}
else 
{
    answer.red = 329.698727446 * pow((temp - 60),-0.1332047592);
    answer.blue = 138.5177312231 * log(temp - 60) - 305.0447927307;
    answer.green = 288.1221695283 * pow((temp - 60),-0.0755148492);
}

answer.red = (answer.red < 0) ? 0 : answer.red;
answer.red = (answer.red > 255) ? 255 : answer.red;

answer.blue = (answer.blue < 0) ? 0 : answer.blue;
answer.blue = (answer.blue > 255) ? 255 : answer.blue;

answer.green = (answer.green < 0) ? 0 : answer.green;
answer.green = (answer.green > 255) ? 255 : answer.green;

return answer;

If you could also state the number of flashes between the SOS patterns.

But my hunch would be towards the occurance of log(0) in log(answer.green)