150
150
return copy_or_same(thd);
153
double Item_func_sqrt::val_real()
156
double value= args[0]->val_real();
157
if ((null_value=(args[0]->null_value || value < 0)))
158
return 0.0; /* purecov: inspected */
162
double Item_func_pow::val_real()
165
double value= args[0]->val_real();
166
double val2= args[1]->val_real();
167
if ((null_value=(args[0]->null_value || args[1]->null_value)))
168
return 0.0; /* purecov: inspected */
169
return fix_result(pow(value,val2));
172
// Trigonometric functions
174
double Item_func_acos::val_real()
177
// the volatile's for BUG #2338 to calm optimizer down (because of gcc's bug)
178
volatile double value= args[0]->val_real();
179
if ((null_value=(args[0]->null_value || (value < -1.0 || value > 1.0))))
184
double Item_func_asin::val_real()
187
// the volatile's for BUG #2338 to calm optimizer down (because of gcc's bug)
188
volatile double value= args[0]->val_real();
189
if ((null_value=(args[0]->null_value || (value < -1.0 || value > 1.0))))
194
double Item_func_atan::val_real()
197
double value= args[0]->val_real();
198
if ((null_value=args[0]->null_value))
202
double val2= args[1]->val_real();
203
if ((null_value=args[1]->null_value))
205
return fix_result(atan2(value,val2));
210
153
double Item_func_cos::val_real()
212
155
assert(fixed == 1);