xref: /openbsd-src/lib/libc/arch/sparc64/fpu/fpu_q.c (revision 68359c4c7bf3f9220a8ff1ed85b065d0f5673e65)
1*68359c4cSjason /*	$OpenBSD: fpu_q.c,v 1.2 2004/02/03 17:18:13 jason Exp $	*/
202b90beaSjason 
302b90beaSjason /*
402b90beaSjason  * Copyright (c) 2003 Jason L. Wright (jason@thought.net)
502b90beaSjason  * All rights reserved.
602b90beaSjason  *
702b90beaSjason  * Redistribution and use in source and binary forms, with or without
802b90beaSjason  * modification, are permitted provided that the following conditions
902b90beaSjason  * are met:
1002b90beaSjason  * 1. Redistributions of source code must retain the above copyright
1102b90beaSjason  *    notice, this list of conditions and the following disclaimer.
1202b90beaSjason  * 2. Redistributions in binary form must reproduce the above copyright
1302b90beaSjason  *    notice, this list of conditions and the following disclaimer in the
1402b90beaSjason  *    documentation and/or other materials provided with the distribution.
1502b90beaSjason  *
1602b90beaSjason  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1702b90beaSjason  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
1802b90beaSjason  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
1902b90beaSjason  * DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
2002b90beaSjason  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
2102b90beaSjason  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
2202b90beaSjason  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2302b90beaSjason  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
2402b90beaSjason  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
2502b90beaSjason  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2602b90beaSjason  * POSSIBILITY OF SUCH DAMAGE.
2702b90beaSjason  */
2802b90beaSjason 
2902b90beaSjason #include <sys/types.h>
3002b90beaSjason #include "fpu_q.h"
3102b90beaSjason 
3202b90beaSjason long double
_Q_mul(long double a,long double b)3302b90beaSjason _Q_mul(long double a, long double b)
3402b90beaSjason {
3502b90beaSjason 	long double c;
3602b90beaSjason 
3702b90beaSjason 	_Qp_mul(&c, &a, &b);
3802b90beaSjason 	return (c);
3902b90beaSjason }
4002b90beaSjason 
4102b90beaSjason long double
_Q_div(long double a,long double b)4202b90beaSjason _Q_div(long double a, long double b)
4302b90beaSjason {
4402b90beaSjason 	long double c;
4502b90beaSjason 
4602b90beaSjason 	_Qp_div(&c, &a, &b);
4702b90beaSjason 	return (c);
4802b90beaSjason }
4902b90beaSjason 
5002b90beaSjason long double
_Q_sub(long double a,long double b)5102b90beaSjason _Q_sub(long double a, long double b)
5202b90beaSjason {
5302b90beaSjason 	long double c;
5402b90beaSjason 
5502b90beaSjason 	_Qp_sub(&c, &a, &b);
5602b90beaSjason 	return (c);
5702b90beaSjason }
5802b90beaSjason 
5902b90beaSjason long double
_Q_add(long double a,long double b)6002b90beaSjason _Q_add(long double a, long double b)
6102b90beaSjason {
6202b90beaSjason 	long double c;
6302b90beaSjason 
6402b90beaSjason 	_Qp_add(&c, &a, &b);
6502b90beaSjason 	return (c);
6602b90beaSjason }
6702b90beaSjason 
6802b90beaSjason long double
_Q_neg(long double a)6902b90beaSjason _Q_neg(long double a)
7002b90beaSjason {
7102b90beaSjason 	long double z = 0, r;
7202b90beaSjason 
7302b90beaSjason 	_Qp_sub(&r, &z, &a);
7402b90beaSjason 	return (r);
7502b90beaSjason }
7602b90beaSjason 
7702b90beaSjason long double
_Q_sqrt(long double a)7802b90beaSjason _Q_sqrt(long double a)
7902b90beaSjason {
8002b90beaSjason 	long double v;
8102b90beaSjason 
8202b90beaSjason 	_Qp_sqrt(&v, &a);
8302b90beaSjason 	return (v);
8402b90beaSjason }
8502b90beaSjason 
8602b90beaSjason long double
_Q_dtoq(double a)8702b90beaSjason _Q_dtoq(double a)
8802b90beaSjason {
8902b90beaSjason 	long double v;
9002b90beaSjason 
9102b90beaSjason 	_Qp_dtoq(&v, a);
9202b90beaSjason 	return (v);
9302b90beaSjason }
9402b90beaSjason 
9502b90beaSjason long double
_Q_stoq(float a)9602b90beaSjason _Q_stoq(float a)
9702b90beaSjason {
9802b90beaSjason 	long double v;
9902b90beaSjason 
10002b90beaSjason 	_Qp_stoq(&v, a);
10102b90beaSjason 	return (v);
10202b90beaSjason }
10302b90beaSjason 
10402b90beaSjason long double
_Q_itoq(int a)10502b90beaSjason _Q_itoq(int a)
10602b90beaSjason {
10702b90beaSjason 	long double v;
10802b90beaSjason 
10902b90beaSjason 	_Qp_itoq(&v, a);
11002b90beaSjason 	return (v);
11102b90beaSjason }
11202b90beaSjason 
11302b90beaSjason long double
_Q_utoq(unsigned int a)11402b90beaSjason _Q_utoq(unsigned int a)
11502b90beaSjason {
11602b90beaSjason 	long double v;
11702b90beaSjason 
11802b90beaSjason 	_Qp_uitoq(&v, a);
11902b90beaSjason 	return (v);
12002b90beaSjason }
12102b90beaSjason 
12202b90beaSjason double
_Q_qtod(long double a)12302b90beaSjason _Q_qtod(long double a)
12402b90beaSjason {
12502b90beaSjason 	double v;
12602b90beaSjason 
12702b90beaSjason 	v = _Qp_qtod(&a);
12802b90beaSjason 	return (v);
12902b90beaSjason }
13002b90beaSjason 
13102b90beaSjason int
_Q_qtoi(long double a)13202b90beaSjason _Q_qtoi(long double a)
13302b90beaSjason {
13402b90beaSjason 	int v;
13502b90beaSjason 
13602b90beaSjason 	v = _Qp_qtoi(&a);
13702b90beaSjason 	return (v);
13802b90beaSjason }
13902b90beaSjason 
14002b90beaSjason float
_Q_qtos(long double a)14102b90beaSjason _Q_qtos(long double a)
14202b90beaSjason {
14302b90beaSjason 	float v;
14402b90beaSjason 
14502b90beaSjason 	v = _Qp_qtos(&a);
14602b90beaSjason 	return (v);
14702b90beaSjason }
14802b90beaSjason 
14902b90beaSjason unsigned int
_Q_qtou(long double a)15002b90beaSjason _Q_qtou(long double a)
15102b90beaSjason {
15202b90beaSjason 	unsigned int v;
15302b90beaSjason 
15402b90beaSjason 	v = _Qp_qtoui(&a);
15502b90beaSjason 	return (v);
15602b90beaSjason }
15702b90beaSjason 
158*68359c4cSjason int
_Q_feq(long double a,long double b)15902b90beaSjason _Q_feq(long double a, long double b)
16002b90beaSjason {
16102b90beaSjason 	return (_Qp_feq(&a, &b));
16202b90beaSjason }
16302b90beaSjason 
164*68359c4cSjason int
_Q_fne(long double a,long double b)16502b90beaSjason _Q_fne(long double a, long double b)
16602b90beaSjason {
16702b90beaSjason 	return (_Qp_fne(&a, &b));
16802b90beaSjason }
16902b90beaSjason 
170*68359c4cSjason int
_Q_fge(long double a,long double b)17102b90beaSjason _Q_fge(long double a, long double b)
17202b90beaSjason {
17302b90beaSjason 	return (_Qp_fge(&a, &b));
17402b90beaSjason }
17502b90beaSjason 
176*68359c4cSjason int
_Q_fgt(long double a,long double b)17702b90beaSjason _Q_fgt(long double a, long double b)
17802b90beaSjason {
17902b90beaSjason 	return (_Qp_fgt(&a, &b));
18002b90beaSjason }
18102b90beaSjason 
182*68359c4cSjason int
_Q_flt(long double a,long double b)18302b90beaSjason _Q_flt(long double a, long double b)
18402b90beaSjason {
18502b90beaSjason 	return (_Qp_flt(&a, &b));
18602b90beaSjason }
18702b90beaSjason 
188*68359c4cSjason int
_Q_fle(long double a,long double b)18902b90beaSjason _Q_fle(long double a, long double b)
19002b90beaSjason {
19102b90beaSjason 	return (_Qp_fle(&a, &b));
19202b90beaSjason }
193