OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-old/] [gcc-4.2.2/] [gcc/] [testsuite/] [gcc.c-torture/] [execute/] [ieee/] [mzero4.c] - Rev 154

Go to most recent revision | Compare with Previous | Blame | View Log

/* Copyright (C) 2003  Free Software Foundation.
   by Roger Sayle <roger@eyesopen.com>, derived from mzero3.c
 
   Constant folding of sin(-0.0), tan(-0.0) and atan(-0.0) should
   all return -0.0, for both double and float forms.  */
 
void abort (void);
typedef __SIZE_TYPE__ size_t;
extern int memcmp (const void *, const void *, size_t);
 
double sin (double);
double tan (double);
double atan (double);
 
float sinf (float);
float tanf (float);
float atanf (float);
 
void expectd (double, double);
void expectf (float, float);
 
void
expectd (double value, double expected)
{
  if (value != expected
      || memcmp ((void *)&value, (void *) &expected, sizeof (double)) != 0)
    abort ();
}
 
void
expectf (float value, float expected)
{
  if (value != expected
      || memcmp ((void *)&value, (void *) &expected, sizeof (float)) != 0)
    abort ();
}
 
int main ()
{
  expectd (sin (0.0), 0.0);
  expectd (tan (0.0), 0.0);
  expectd (atan (0.0), 0.0);
 
  expectd (sin (-0.0), -0.0);
  expectd (tan (-0.0), -0.0);
  expectd (atan (-0.0), -0.0);
 
  expectf (sinf (0.0f), 0.0f);
  expectf (tanf (0.0f), 0.0f);
  expectf (atanf (0.0f), 0.0f);
 
  expectf (sinf (-0.0f), -0.0f);
  expectf (tanf (-0.0f), -0.0f);
  expectf (atanf (-0.0f), -0.0f);
 
  return 0;
}
 
 

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.