/*
 * Copyright 2015 The Emscripten Authors.  All rights reserved.
 * Emscripten is available under two separate licenses, the MIT license and the
 * University of Illinois/NCSA Open Source License.  Both these licenses can be
 * found in the LICENSE file.
 */

#include <math.h>
#include <stdio.h>
#include <float.h>
#include <emscripten/emscripten.h>

float __attribute__((noinline)) negative10()
{
  return (emscripten_random() < -1) ? 0.f : -10.5f;
}

float __attribute__((noinline)) positive42()
{
  return (emscripten_random() < -1) ? 0.f : 42.25f;
}

double __attribute__((noinline)) negative_dbl_max()
{
  return (emscripten_random() < -1) ? 0.f : -DBL_MAX;
}

int main()
{
  printf("%f\n", __builtin_fabsf(negative10()));
  printf("%f\n", __builtin_fabsf(positive42()));
  printf("%f\n", __builtin_fabsf((float)negative_dbl_max()));

  printf("%f\n", __builtin_fabs(negative10()));
  printf("%f\n", __builtin_fabs(positive42()));
  printf("%f\n", __builtin_fabs(negative_dbl_max()));
}