~drizzle-trunk/drizzle/development

« back to all changes in this revision

Viewing changes to drizzled/item_func.cc

code clean move Item_func_acos, Item_func_asin, Item_func_atan, Item_func_pow, Item_func_sqrt to functions directory

Show diffs side-by-side

added added

removed removed

Lines of Context:
150
150
  return copy_or_same(thd);
151
151
}
152
152
 
153
 
double Item_func_sqrt::val_real()
154
 
{
155
 
  assert(fixed == 1);
156
 
  double value= args[0]->val_real();
157
 
  if ((null_value=(args[0]->null_value || value < 0)))
158
 
    return 0.0; /* purecov: inspected */
159
 
  return sqrt(value);
160
 
}
161
 
 
162
 
double Item_func_pow::val_real()
163
 
{
164
 
  assert(fixed == 1);
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));
170
 
}
171
 
 
172
 
// Trigonometric functions
173
 
 
174
 
double Item_func_acos::val_real()
175
 
{
176
 
  assert(fixed == 1);
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))))
180
 
    return 0.0;
181
 
  return acos(value);
182
 
}
183
 
 
184
 
double Item_func_asin::val_real()
185
 
{
186
 
  assert(fixed == 1);
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))))
190
 
    return 0.0;
191
 
  return asin(value);
192
 
}
193
 
 
194
 
double Item_func_atan::val_real()
195
 
{
196
 
  assert(fixed == 1);
197
 
  double value= args[0]->val_real();
198
 
  if ((null_value=args[0]->null_value))
199
 
    return 0.0;
200
 
  if (arg_count == 2)
201
 
  {
202
 
    double val2= args[1]->val_real();
203
 
    if ((null_value=args[1]->null_value))
204
 
      return 0.0;
205
 
    return fix_result(atan2(value,val2));
206
 
  }
207
 
  return atan(value);
208
 
}
209
 
 
210
153
double Item_func_cos::val_real()
211
154
{
212
155
  assert(fixed == 1);