summaryrefslogtreecommitdiff
path: root/libm/w_cosh.c
blob: d3795244708b9780afb74f271b2296fa26ba1549 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
/*
 * ====================================================
 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
 *
 * Developed at SunPro, a Sun Microsystems, Inc. business.
 * Permission to use, copy, modify, and distribute this
 * software is freely granted, provided that this notice
 * is preserved.
 * ====================================================
 */

/*
 * wrapper cosh(x)
 */

#include "math.h"
#include "math_private.h"

double cosh(double x)		/* wrapper cosh */
{
#ifdef _IEEE_LIBM
	return __ieee754_cosh(x);
#else
	double z;
	z = __ieee754_cosh(x);
	if(_LIB_VERSION == _IEEE_ || isnan(x)) return z;
	if(fabs(x)>7.10475860073943863426e+02) {
	        return __kernel_standard(x,x,5); /* cosh overflow */
	} else
	    return z;
#endif
}
libm_hidden_def(cosh)
dr[inner] = 'T'; } } /* strncpy tests */ adr[size-1] = 'T'; for (outer = size - 1; outer >= MAX (0, size - 128); --outer) { size_t len; for (len = 0; len < size - outer; ++len) { if (strncpy (dest, &adr[outer], len) != dest || memcmp (dest, &adr[outer], len) != 0) { printf ("outer strncpy flunked for outer = %d, len = %Zd\n", outer, len); result = 1; } } } adr[size-1] = '\0'; for (outer = size - 1; outer >= MAX (0, size - 128); --outer) { for (inner = MAX (outer, size - 64); inner < size; ++inner) { size_t len; adr[inner] = '\0'; for (len = 0; len < size - outer + 64; ++len) { if (strncpy (dest, &adr[outer], len) != dest || memcmp (dest, &adr[outer], MIN (inner - outer, len)) != 0 || (inner - outer < len && strlen (dest) != (inner - outer))) { printf ("strncpy flunked for outer = %d, inner = %d, len = %Zd\n", outer, inner, len); result = 1; } if (strncpy (dest + 1, &adr[outer], len) != dest + 1 || memcmp (dest + 1, &adr[outer], MIN (inner - outer, len)) != 0 || (inner - outer < len && strlen (dest + 1) != (inner - outer))) { printf ("strncpy+1 flunked for outer = %d, inner = %d, len = %Zd\n", outer, inner, len); result = 1; } } adr[inner] = 'T'; } } /* stpcpy test */ for (outer = size - 1; outer >= MAX (0, size - 128); --outer) { for (inner = MAX (outer, size - 64); inner < size; ++inner) { adr[inner] = '\0'; if ((stpcpy (dest, &adr[outer]) - dest) != inner - outer) { printf ("stpcpy flunked for outer = %d, inner = %d\n", outer, inner); result = 1; } adr[inner] = 'T'; } } /* stpncpy test */ for (outer = size - 1; outer >= MAX (0, size - 128); --outer) { for (middle = MAX (outer, size - 64); middle < size; ++middle) { adr[middle] = '\0'; for (inner = 0; inner < size - outer; ++ inner) { if ((stpncpy (dest, &adr[outer], inner) - dest) != MIN (inner, middle - outer)) { printf ("stpncpy flunked for outer = %d, middle = %d, " "inner = %d\n", outer, middle, inner); result = 1; } } adr[middle] = 'T'; } } /* memcpy test */ for (outer = size - 1; outer >= MAX (0, size - 128); --outer) for (inner = 0; inner < size - outer; ++inner) if (memcpy (dest, &adr[outer], inner) != dest) { printf ("memcpy flunked for outer = %d, inner = %d\n", outer, inner); result = 1; } /* mempcpy test */ for (outer = size - 1; outer >= MAX (0, size - 128); --outer) for (inner = 0; inner < size - outer; ++inner) if (mempcpy (dest, &adr[outer], inner) != dest + inner) { printf ("mempcpy flunked for outer = %d, inner = %d\n", outer, inner); result = 1; } /* memccpy test */ memset (adr, '\0', size); for (outer = size - 1; outer >= MAX (0, size - 128); --outer) for (inner = 0; inner < size - outer; ++inner) if (memccpy (dest, &adr[outer], '\1', inner) != NULL) { printf ("memccpy flunked full copy for outer = %d, inner = %d\n", outer, inner); result = 1; } for (outer = size - 1; outer >= MAX (0, size - 128); --outer) for (middle = 0; middle < size - outer; ++middle) { memset (dest, '\2', middle + 1); for (inner = 0; inner < middle; ++inner) { adr[outer + inner] = '\1'; if (memccpy (dest, &adr[outer], '\1', middle + 128) != dest + inner + 1) { printf ("\ memccpy flunked partial copy for outer = %d, middle = %d, inner = %d\n", outer, middle, inner); result = 1; } else if (dest[inner + 1] != '\2') { printf ("\ memccpy copied too much for outer = %d, middle = %d, inner = %d\n", outer, middle, inner); result = 1; } adr[outer + inner] = '\0'; } } } return result; }