11.1Sjoerg//===-- powidf2_test.cpp - Test __powidf2 ---------------------------------===// 21.1Sjoerg// 31.1Sjoerg// The LLVM Compiler Infrastructure 41.1Sjoerg// 51.1Sjoerg// This file is dual licensed under the MIT and the University of Illinois Open 61.1Sjoerg// Source Licenses. See LICENSE.TXT for details. 71.1Sjoerg// 81.1Sjoerg//===----------------------------------------------------------------------===// 91.1Sjoerg// 101.1Sjoerg// This file tests __powidf2 for the compiler_rt library. 111.1Sjoerg// 121.1Sjoerg//===----------------------------------------------------------------------===// 131.1Sjoerg 141.1Sjoerg#include "int_lib.h" 151.1Sjoerg#include <stdio.h> 161.1Sjoerg#include <math.h> 171.1Sjoerg 181.1Sjoerg// Returns: a ^ b 191.1Sjoerg 201.1Sjoergdouble __powidf2(double a, si_int b); 211.1Sjoerg 221.1Sjoergint test__powidf2(double a, si_int b, double expected) 231.1Sjoerg{ 241.1Sjoerg double x = __powidf2(a, b); 251.1Sjoerg int correct = (x == expected) && (signbit(x) == signbit(expected)); 261.1Sjoerg if (!correct) 271.1Sjoerg printf("error in __powidf2(%f, %d) = %f, expected %f\n", 281.1Sjoerg a, b, x, expected); 291.1Sjoerg return !correct; 301.1Sjoerg} 311.1Sjoerg 321.1Sjoergint main() 331.1Sjoerg{ 341.1Sjoerg if (test__powidf2(0, 0, 1)) 351.1Sjoerg return 1; 361.1Sjoerg if (test__powidf2(1, 0, 1)) 371.1Sjoerg return 1; 381.1Sjoerg if (test__powidf2(1.5, 0, 1)) 391.1Sjoerg return 1; 401.1Sjoerg if (test__powidf2(2, 0, 1)) 411.1Sjoerg return 1; 421.1Sjoerg if (test__powidf2(INFINITY, 0, 1)) 431.1Sjoerg return 1; 441.1Sjoerg 451.1Sjoerg if (test__powidf2(-0., 0, 1)) 461.1Sjoerg return 1; 471.1Sjoerg if (test__powidf2(-1, 0, 1)) 481.1Sjoerg return 1; 491.1Sjoerg if (test__powidf2(-1.5, 0, 1)) 501.1Sjoerg return 1; 511.1Sjoerg if (test__powidf2(-2, 0, 1)) 521.1Sjoerg return 1; 531.1Sjoerg if (test__powidf2(-INFINITY, 0, 1)) 541.1Sjoerg return 1; 551.1Sjoerg 561.1Sjoerg if (test__powidf2(0, 1, 0)) 571.1Sjoerg return 1; 581.1Sjoerg if (test__powidf2(0, 2, 0)) 591.1Sjoerg return 1; 601.1Sjoerg if (test__powidf2(0, 3, 0)) 611.1Sjoerg return 1; 621.1Sjoerg if (test__powidf2(0, 4, 0)) 631.1Sjoerg return 1; 641.1Sjoerg if (test__powidf2(0, 0x7FFFFFFE, 0)) 651.1Sjoerg return 1; 661.1Sjoerg if (test__powidf2(0, 0x7FFFFFFF, 0)) 671.1Sjoerg return 1; 681.1Sjoerg 691.1Sjoerg if (test__powidf2(-0., 1, -0.)) 701.1Sjoerg return 1; 711.1Sjoerg if (test__powidf2(-0., 2, 0)) 721.1Sjoerg return 1; 731.1Sjoerg if (test__powidf2(-0., 3, -0.)) 741.1Sjoerg return 1; 751.1Sjoerg if (test__powidf2(-0., 4, 0)) 761.1Sjoerg return 1; 771.1Sjoerg if (test__powidf2(-0., 0x7FFFFFFE, 0)) 781.1Sjoerg return 1; 791.1Sjoerg if (test__powidf2(-0., 0x7FFFFFFF, -0.)) 801.1Sjoerg return 1; 811.1Sjoerg 821.1Sjoerg if (test__powidf2(1, 1, 1)) 831.1Sjoerg return 1; 841.1Sjoerg if (test__powidf2(1, 2, 1)) 851.1Sjoerg return 1; 861.1Sjoerg if (test__powidf2(1, 3, 1)) 871.1Sjoerg return 1; 881.1Sjoerg if (test__powidf2(1, 4, 1)) 891.1Sjoerg return 1; 901.1Sjoerg if (test__powidf2(1, 0x7FFFFFFE, 1)) 911.1Sjoerg return 1; 921.1Sjoerg if (test__powidf2(1, 0x7FFFFFFF, 1)) 931.1Sjoerg return 1; 941.1Sjoerg 951.1Sjoerg if (test__powidf2(INFINITY, 1, INFINITY)) 961.1Sjoerg return 1; 971.1Sjoerg if (test__powidf2(INFINITY, 2, INFINITY)) 981.1Sjoerg return 1; 991.1Sjoerg if (test__powidf2(INFINITY, 3, INFINITY)) 1001.1Sjoerg return 1; 1011.1Sjoerg if (test__powidf2(INFINITY, 4, INFINITY)) 1021.1Sjoerg return 1; 1031.1Sjoerg if (test__powidf2(INFINITY, 0x7FFFFFFE, INFINITY)) 1041.1Sjoerg return 1; 1051.1Sjoerg if (test__powidf2(INFINITY, 0x7FFFFFFF, INFINITY)) 1061.1Sjoerg return 1; 1071.1Sjoerg 1081.1Sjoerg if (test__powidf2(-INFINITY, 1, -INFINITY)) 1091.1Sjoerg return 1; 1101.1Sjoerg if (test__powidf2(-INFINITY, 2, INFINITY)) 1111.1Sjoerg return 1; 1121.1Sjoerg if (test__powidf2(-INFINITY, 3, -INFINITY)) 1131.1Sjoerg return 1; 1141.1Sjoerg if (test__powidf2(-INFINITY, 4, INFINITY)) 1151.1Sjoerg return 1; 1161.1Sjoerg if (test__powidf2(-INFINITY, 0x7FFFFFFE, INFINITY)) 1171.1Sjoerg return 1; 1181.1Sjoerg if (test__powidf2(-INFINITY, 0x7FFFFFFF, -INFINITY)) 1191.1Sjoerg return 1; 1201.1Sjoerg 1211.1Sjoerg if (test__powidf2(0, -1, INFINITY)) 1221.1Sjoerg return 1; 1231.1Sjoerg if (test__powidf2(0, -2, INFINITY)) 1241.1Sjoerg return 1; 1251.1Sjoerg if (test__powidf2(0, -3, INFINITY)) 1261.1Sjoerg return 1; 1271.1Sjoerg if (test__powidf2(0, -4, INFINITY)) 1281.1Sjoerg return 1; 1291.1Sjoerg if (test__powidf2(0, 0x80000002, INFINITY)) 1301.1Sjoerg return 1; 1311.1Sjoerg if (test__powidf2(0, 0x80000001, INFINITY)) 1321.1Sjoerg return 1; 1331.1Sjoerg if (test__powidf2(0, 0x80000000, INFINITY)) 1341.1Sjoerg return 1; 1351.1Sjoerg 1361.1Sjoerg if (test__powidf2(-0., -1, -INFINITY)) 1371.1Sjoerg return 1; 1381.1Sjoerg if (test__powidf2(-0., -2, INFINITY)) 1391.1Sjoerg return 1; 1401.1Sjoerg if (test__powidf2(-0., -3, -INFINITY)) 1411.1Sjoerg return 1; 1421.1Sjoerg if (test__powidf2(-0., -4, INFINITY)) 1431.1Sjoerg return 1; 1441.1Sjoerg if (test__powidf2(-0., 0x80000002, INFINITY)) 1451.1Sjoerg return 1; 1461.1Sjoerg if (test__powidf2(-0., 0x80000001, -INFINITY)) 1471.1Sjoerg return 1; 1481.1Sjoerg if (test__powidf2(-0., 0x80000000, INFINITY)) 1491.1Sjoerg return 1; 1501.1Sjoerg 1511.1Sjoerg if (test__powidf2(1, -1, 1)) 1521.1Sjoerg return 1; 1531.1Sjoerg if (test__powidf2(1, -2, 1)) 1541.1Sjoerg return 1; 1551.1Sjoerg if (test__powidf2(1, -3, 1)) 1561.1Sjoerg return 1; 1571.1Sjoerg if (test__powidf2(1, -4, 1)) 1581.1Sjoerg return 1; 1591.1Sjoerg if (test__powidf2(1, 0x80000002, 1)) 1601.1Sjoerg return 1; 1611.1Sjoerg if (test__powidf2(1, 0x80000001, 1)) 1621.1Sjoerg return 1; 1631.1Sjoerg if (test__powidf2(1, 0x80000000, 1)) 1641.1Sjoerg return 1; 1651.1Sjoerg 1661.1Sjoerg if (test__powidf2(INFINITY, -1, 0)) 1671.1Sjoerg return 1; 1681.1Sjoerg if (test__powidf2(INFINITY, -2, 0)) 1691.1Sjoerg return 1; 1701.1Sjoerg if (test__powidf2(INFINITY, -3, 0)) 1711.1Sjoerg return 1; 1721.1Sjoerg if (test__powidf2(INFINITY, -4, 0)) 1731.1Sjoerg return 1; 1741.1Sjoerg if (test__powidf2(INFINITY, 0x80000002, 0)) 1751.1Sjoerg return 1; 1761.1Sjoerg if (test__powidf2(INFINITY, 0x80000001, 0)) 1771.1Sjoerg return 1; 1781.1Sjoerg if (test__powidf2(INFINITY, 0x80000000, 0)) 1791.1Sjoerg return 1; 1801.1Sjoerg 1811.1Sjoerg if (test__powidf2(-INFINITY, -1, -0.)) 1821.1Sjoerg return 1; 1831.1Sjoerg if (test__powidf2(-INFINITY, -2, 0)) 1841.1Sjoerg return 1; 1851.1Sjoerg if (test__powidf2(-INFINITY, -3, -0.)) 1861.1Sjoerg return 1; 1871.1Sjoerg if (test__powidf2(-INFINITY, -4, 0)) 1881.1Sjoerg return 1; 1891.1Sjoerg if (test__powidf2(-INFINITY, 0x80000002, 0)) 1901.1Sjoerg return 1; 1911.1Sjoerg if (test__powidf2(-INFINITY, 0x80000001, -0.)) 1921.1Sjoerg return 1; 1931.1Sjoerg if (test__powidf2(-INFINITY, 0x80000000, 0)) 1941.1Sjoerg return 1; 1951.1Sjoerg 1961.1Sjoerg if (test__powidf2(2, 10, 1024.)) 1971.1Sjoerg return 1; 1981.1Sjoerg if (test__powidf2(-2, 10, 1024.)) 1991.1Sjoerg return 1; 2001.1Sjoerg if (test__powidf2(2, -10, 1/1024.)) 2011.1Sjoerg return 1; 2021.1Sjoerg if (test__powidf2(-2, -10, 1/1024.)) 2031.1Sjoerg return 1; 2041.1Sjoerg 2051.1Sjoerg if (test__powidf2(2, 19, 524288.)) 2061.1Sjoerg return 1; 2071.1Sjoerg if (test__powidf2(-2, 19, -524288.)) 2081.1Sjoerg return 1; 2091.1Sjoerg if (test__powidf2(2, -19, 1/524288.)) 2101.1Sjoerg return 1; 2111.1Sjoerg if (test__powidf2(-2, -19, -1/524288.)) 2121.1Sjoerg return 1; 2131.1Sjoerg 2141.1Sjoerg if (test__powidf2(2, 31, 2147483648.)) 2151.1Sjoerg return 1; 2161.1Sjoerg if (test__powidf2(-2, 31, -2147483648.)) 2171.1Sjoerg return 1; 2181.1Sjoerg if (test__powidf2(2, -31, 1/2147483648.)) 2191.1Sjoerg return 1; 2201.1Sjoerg if (test__powidf2(-2, -31, -1/2147483648.)) 2211.1Sjoerg return 1; 2221.1Sjoerg 2231.1Sjoerg return 0; 2241.1Sjoerg} 225