2017-01-11 19:58:08 +00:00
<!doctype html>
< html >
< head >
< title > lib/real/kremp2.c< / title >
< style type = "text/css" >
body { color:#000000; background-color:#ffffff }
body { font-family:Helvetica, sans-serif; font-size:10pt }
h1 { font-size:14pt }
.code { border-collapse:collapse; width:100%; }
.code { font-family: "Monospace", monospace; font-size:10pt }
.code { line-height: 1.2em }
.comment { color: green; font-style: oblique }
.keyword { color: blue }
.string_literal { color: red }
.directive { color: darkmagenta }
.expansion { display: none; }
.macro:hover .expansion { display: block; border: 2px solid #FF0000; padding: 2px; background-color:#FFF0F0; font-weight: normal; -webkit-border-radius:5px; -webkit-box-shadow:1px 1px 7px #000; position: absolute; top: -1em; left:10em; z-index: 1 }
.macro { color: darkmagenta; background-color:LemonChiffon; position: relative }
.num { width:2.5em; padding-right:2ex; background-color:#eeeeee }
.num { text-align:right; font-size:8pt }
.num { color:#444444 }
.line { padding-left: 1ex; border-left: 3px solid #ccc }
.line { white-space: pre }
.msg { -webkit-box-shadow:1px 1px 7px #000 }
.msg { -webkit-border-radius:5px }
.msg { font-family:Helvetica, sans-serif; font-size:8pt }
.msg { float:left }
.msg { padding:0.25em 1ex 0.25em 1ex }
.msg { margin-top:10px; margin-bottom:10px }
.msg { font-weight:bold }
.msg { max-width:60em; word-wrap: break-word; white-space: pre-wrap }
.msgT { padding:0x; spacing:0x }
.msgEvent { background-color:#fff8b4; color:#000000 }
.msgControl { background-color:#bbbbbb; color:#000000 }
.mrange { background-color:#dfddf3 }
.mrange { border-bottom:1px solid #6F9DBE }
.PathIndex { font-weight: bold; padding:0px 5px; margin-right:5px; }
.PathIndex { -webkit-border-radius:8px }
.PathIndexEvent { background-color:#bfba87 }
.PathIndexControl { background-color:#8c8c8c }
.PathNav a { text-decoration:none; font-size: larger }
.CodeInsertionHint { font-weight: bold; background-color: #10dd10 }
.CodeRemovalHint { background-color:#de1010 }
.CodeRemovalHint { border-bottom:1px solid #6F9DBE }
table.simpletable {
padding: 5px;
font-size:12pt;
margin:20px;
border-collapse: collapse; border-spacing: 0px;
}
td.rowname {
text-align:right; font-weight:bold; color:#444444;
padding-right:2ex; }
< / style >
< / head >
< body >
<!-- BUGDESC The left operand of ' - ' is a garbage value -->
<!-- BUGTYPE Result of operation is garbage or undefined -->
<!-- BUGCATEGORY Logic error -->
<!-- BUGFILE /home/carsten/amath/lib/real/kremp2.c -->
<!-- FILENAME kremp2.c -->
<!-- FUNCTIONNAME __kernel_rem_pio2 -->
<!-- ISSUEHASHCONTENTOFLINEINCONTEXT a395a6f4121103612025bf7df4711fbc -->
<!-- BUGLINE 329 -->
<!-- BUGCOLUMN 19 -->
<!-- BUGPATHLENGTH 23 -->
<!-- BUGMETAEND -->
<!-- REPORTHEADER -->
< h3 > Bug Summary< / h3 >
< table class = "simpletable" >
2017-01-28 21:14:35 +00:00
< tr > < td class = "rowname" > File:< / td > < td > real/kremp2.c< / td > < / tr >
2017-01-11 19:58:08 +00:00
< tr > < td class = "rowname" > Location:< / td > < td > < a href = "#EndPath" > line 329, column 19< / a > < / td > < / tr >
< tr > < td class = "rowname" > Description:< / td > < td > The left operand of '-' is a garbage value< / td > < / tr >
< / table >
<!-- REPORTSUMMARYEXTRA -->
< h3 > Annotated Source Code< / h3 >
< table class = "code" >
< tr > < td class = "num" id = "LN1" > 1< / td > < td class = "line" > < span class = 'comment' > /* @(#)k_rem_pio2.c 1.3 95/01/18 */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN2" > 2< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN3" > 3< / td > < td class = "line" > < span class = 'comment' > /*< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN4" > 4< / td > < td class = "line" > < span class = 'comment' > * Copyright (c) 2015-2017 Carsten Sonne Larsen < cs@innolan.dk> < / span > < / td > < / tr >
< tr > < td class = "num" id = "LN5" > 5< / td > < td class = "line" > < span class = 'comment' > * All rights reserved.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN6" > 6< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN7" > 7< / td > < td class = "line" > < span class = 'comment' > * Redistribution and use in source and binary forms, with or without< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN8" > 8< / td > < td class = "line" > < span class = 'comment' > * modification, are permitted provided that the following conditions< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN9" > 9< / td > < td class = "line" > < span class = 'comment' > * are met:< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN10" > 10< / td > < td class = "line" > < span class = 'comment' > * 1. Redistributions of source code must retain the above copyright< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN11" > 11< / td > < td class = "line" > < span class = 'comment' > * notice, this list of conditions and the following disclaimer.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN12" > 12< / td > < td class = "line" > < span class = 'comment' > * 2. Redistributions in binary form must reproduce the above copyright< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN13" > 13< / td > < td class = "line" > < span class = 'comment' > * notice, this list of conditions and the following disclaimer in the< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN14" > 14< / td > < td class = "line" > < span class = 'comment' > * documentation and/or other materials provided with the distribution.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN15" > 15< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN16" > 16< / td > < td class = "line" > < span class = 'comment' > * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN17" > 17< / td > < td class = "line" > < span class = 'comment' > * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN18" > 18< / td > < td class = "line" > < span class = 'comment' > * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN19" > 19< / td > < td class = "line" > < span class = 'comment' > * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN20" > 20< / td > < td class = "line" > < span class = 'comment' > * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN21" > 21< / td > < td class = "line" > < span class = 'comment' > * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN22" > 22< / td > < td class = "line" > < span class = 'comment' > * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN23" > 23< / td > < td class = "line" > < span class = 'comment' > * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN24" > 24< / td > < td class = "line" > < span class = 'comment' > * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN25" > 25< / td > < td class = "line" > < span class = 'comment' > * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN26" > 26< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN27" > 27< / td > < td class = "line" > < span class = 'comment' > * The origin source code can be obtained from:< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN28" > 28< / td > < td class = "line" > < span class = 'comment' > * http://www.netlib.org/fdlibm/k_rem_pio2.c< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN29" > 29< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN30" > 30< / td > < td class = "line" > < span class = 'comment' > */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN31" > 31< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN32" > 32< / td > < td class = "line" > < span class = 'comment' > /*< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN33" > 33< / td > < td class = "line" > < span class = 'comment' > * ====================================================< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN34" > 34< / td > < td class = "line" > < span class = 'comment' > * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN35" > 35< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN36" > 36< / td > < td class = "line" > < span class = 'comment' > * Developed at SunSoft, a Sun Microsystems, Inc. business.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN37" > 37< / td > < td class = "line" > < span class = 'comment' > * Permission to use, copy, modify, and distribute this< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN38" > 38< / td > < td class = "line" > < span class = 'comment' > * software is freely granted, provided that this notice< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN39" > 39< / td > < td class = "line" > < span class = 'comment' > * is preserved.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN40" > 40< / td > < td class = "line" > < span class = 'comment' > * ====================================================< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN41" > 41< / td > < td class = "line" > < span class = 'comment' > */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN42" > 42< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN43" > 43< / td > < td class = "line" > < span class = 'directive' > #include "prim.h"< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN44" > 44< / td > < td class = "line" > < span class = 'directive' > #include "math.h"< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN45" > 45< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN46" > 46< / td > < td class = "line" > < span class = 'comment' > /*< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN47" > 47< / td > < td class = "line" > < span class = 'comment' > * Constants:< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN48" > 48< / td > < td class = "line" > < span class = 'comment' > * The hexadecimal values are the intended ones for the following< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN49" > 49< / td > < td class = "line" > < span class = 'comment' > * constants. The decimal values may be used, provided that the< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN50" > 50< / td > < td class = "line" > < span class = 'comment' > * compiler will convert from decimal to binary accurately enough< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN51" > 51< / td > < td class = "line" > < span class = 'comment' > * to produce the hexadecimal values shown.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN52" > 52< / td > < td class = "line" > < span class = 'comment' > */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN53" > 53< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN54" > 54< / td > < td class = "line" > < span class = 'keyword' > static< / span > < span class = 'keyword' > const< / span > < span class = 'keyword' > int< / span > init_jk[] = {2,3,4,6}; < span class = 'comment' > /* initial value for jk */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN55" > 55< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN56" > 56< / td > < td class = "line" > < span class = 'keyword' > static< / span > < span class = 'keyword' > const< / span > < span class = 'keyword' > double< / span > PIo2[] = {< / td > < / tr >
< tr > < td class = "num" id = "LN57" > 57< / td > < td class = "line" > 1.57079625129699707031e+00, < span class = 'comment' > /* 0x3FF921FB, 0x40000000 */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN58" > 58< / td > < td class = "line" > 7.54978941586159635335e-08, < span class = 'comment' > /* 0x3E74442D, 0x00000000 */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN59" > 59< / td > < td class = "line" > 5.39030252995776476554e-15, < span class = 'comment' > /* 0x3CF84698, 0x80000000 */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN60" > 60< / td > < td class = "line" > 3.28200341580791294123e-22, < span class = 'comment' > /* 0x3B78CC51, 0x60000000 */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN61" > 61< / td > < td class = "line" > 1.27065575308067607349e-29, < span class = 'comment' > /* 0x39F01B83, 0x80000000 */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN62" > 62< / td > < td class = "line" > 1.22933308981111328932e-36, < span class = 'comment' > /* 0x387A2520, 0x40000000 */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN63" > 63< / td > < td class = "line" > 2.73370053816464559624e-44, < span class = 'comment' > /* 0x36E38222, 0x80000000 */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN64" > 64< / td > < td class = "line" > 2.16741683877804819444e-51, < span class = 'comment' > /* 0x3569F31D, 0x00000000 */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN65" > 65< / td > < td class = "line" > };< / td > < / tr >
< tr > < td class = "num" id = "LN66" > 66< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN67" > 67< / td > < td class = "line" > < span class = 'keyword' > static< / span > < span class = 'keyword' > const< / span > < span class = 'keyword' > double< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN68" > 68< / td > < td class = "line" > zero = 0.0,< / td > < / tr >
< tr > < td class = "num" id = "LN69" > 69< / td > < td class = "line" > one = 1.0,< / td > < / tr >
< tr > < td class = "num" id = "LN70" > 70< / td > < td class = "line" > two24 = 1.67772160000000000000e+07, < span class = 'comment' > /* 0x41700000, 0x00000000 */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN71" > 71< / td > < td class = "line" > twon24 = 5.96046447753906250000e-08; < span class = 'comment' > /* 0x3E700000, 0x00000000 */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN72" > 72< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN73" > 73< / td > < td class = "line" > < span class = 'comment' > /**< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN74" > 74< / td > < td class = "line" > < span class = 'comment' > * @brief Kernel reduction function.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN75" > 75< / td > < td class = "line" > < span class = 'comment' > * @version 1.4< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN76" > 76< / td > < td class = "line" > < span class = 'comment' > * @date 96/03/07< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN77" > 77< / td > < td class = "line" > < span class = 'comment' > * @details< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN78" > 78< / td > < td class = "line" > < span class = 'comment' > * < pre> < / span > < / td > < / tr >
< tr > < td class = "num" id = "LN79" > 79< / td > < td class = "line" > < span class = 'comment' > * __kernel_rem_pio2(x,y,e0,nx,prec,ipio2)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN80" > 80< / td > < td class = "line" > < span class = 'comment' > * double x[],y[]; int e0,nx,prec; int ipio2[];< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN81" > 81< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN82" > 82< / td > < td class = "line" > < span class = 'comment' > * __kernel_rem_pio2 return the last three digits of N with< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN83" > 83< / td > < td class = "line" > < span class = 'comment' > * y = x - N*pi/2< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN84" > 84< / td > < td class = "line" > < span class = 'comment' > * so that |y| < pi/2.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN85" > 85< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN86" > 86< / td > < td class = "line" > < span class = 'comment' > * The method is to compute the integer (mod 8) and fraction parts of< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN87" > 87< / td > < td class = "line" > < span class = 'comment' > * (2/pi)*x without doing the full multiplication. In general we< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN88" > 88< / td > < td class = "line" > < span class = 'comment' > * skip the part of the product that are known to be a huge integer (< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN89" > 89< / td > < td class = "line" > < span class = 'comment' > * more accurately, = 0 mod 8 ). Thus the number of operations are< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN90" > 90< / td > < td class = "line" > < span class = 'comment' > * independent of the exponent of the input.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN91" > 91< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN92" > 92< / td > < td class = "line" > < span class = 'comment' > * (2/pi) is represented by an array of 24-bit integers in ipio2[].< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN93" > 93< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN94" > 94< / td > < td class = "line" > < span class = 'comment' > * Input parameters:< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN95" > 95< / td > < td class = "line" > < span class = 'comment' > * x[] The input value (must be positive) is broken into nx< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN96" > 96< / td > < td class = "line" > < span class = 'comment' > * pieces of 24-bit integers in double precision format.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN97" > 97< / td > < td class = "line" > < span class = 'comment' > * x[i] will be the i-th 24 bit of x. The scaled exponent< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN98" > 98< / td > < td class = "line" > < span class = 'comment' > * of x[0] is given in input parameter e0 (i.e., x[0]*2^e0< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN99" > 99< / td > < td class = "line" > < span class = 'comment' > * match x's up to 24 bits.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN100" > 100< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN101" > 101< / td > < td class = "line" > < span class = 'comment' > * Example of breaking a double positive z into x[0]+x[1]+x[2]:< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN102" > 102< / td > < td class = "line" > < span class = 'comment' > * e0 = ilogb(z)-23< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN103" > 103< / td > < td class = "line" > < span class = 'comment' > * z = scalbn(z,-e0)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN104" > 104< / td > < td class = "line" > < span class = 'comment' > * for i = 0,1,2< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN105" > 105< / td > < td class = "line" > < span class = 'comment' > * x[i] = floor(z)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN106" > 106< / td > < td class = "line" > < span class = 'comment' > * z = (z-x[i])*2**24< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN107" > 107< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN108" > 108< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN109" > 109< / td > < td class = "line" > < span class = 'comment' > * y[] ouput result in an array of double precision numbers.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN110" > 110< / td > < td class = "line" > < span class = 'comment' > * The dimension of y[] is:< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN111" > 111< / td > < td class = "line" > < span class = 'comment' > * 24-bit precision 1< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN112" > 112< / td > < td class = "line" > < span class = 'comment' > * 53-bit precision 2< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN113" > 113< / td > < td class = "line" > < span class = 'comment' > * 64-bit precision 2< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN114" > 114< / td > < td class = "line" > < span class = 'comment' > * 113-bit precision 3< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN115" > 115< / td > < td class = "line" > < span class = 'comment' > * The actual value is the sum of them. Thus for 113-bit< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN116" > 116< / td > < td class = "line" > < span class = 'comment' > * precison, one may have to do something like:< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN117" > 117< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN118" > 118< / td > < td class = "line" > < span class = 'comment' > * long double t,w,r_head, r_tail;< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN119" > 119< / td > < td class = "line" > < span class = 'comment' > * t = (long double)y[2] + (long double)y[1];< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN120" > 120< / td > < td class = "line" > < span class = 'comment' > * w = (long double)y[0];< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN121" > 121< / td > < td class = "line" > < span class = 'comment' > * r_head = t+w;< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN122" > 122< / td > < td class = "line" > < span class = 'comment' > * r_tail = w - (r_head - t);< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN123" > 123< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN124" > 124< / td > < td class = "line" > < span class = 'comment' > * e0 The exponent of x[0]< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN125" > 125< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN126" > 126< / td > < td class = "line" > < span class = 'comment' > * nx dimension of x[]< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN127" > 127< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN128" > 128< / td > < td class = "line" > < span class = 'comment' > * prec an integer indicating the precision:< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN129" > 129< / td > < td class = "line" > < span class = 'comment' > * 0 24 bits (single)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN130" > 130< / td > < td class = "line" > < span class = 'comment' > * 1 53 bits (double)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN131" > 131< / td > < td class = "line" > < span class = 'comment' > * 2 64 bits (extended)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN132" > 132< / td > < td class = "line" > < span class = 'comment' > * 3 113 bits (quad)< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN133" > 133< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN134" > 134< / td > < td class = "line" > < span class = 'comment' > * ipio2[]< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN135" > 135< / td > < td class = "line" > < span class = 'comment' > * integer array, contains the (24*i)-th to (24*i+23)-th< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN136" > 136< / td > < td class = "line" > < span class = 'comment' > * bit of 2/pi after binary point. The corresponding< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN137" > 137< / td > < td class = "line" > < span class = 'comment' > * floating value is< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN138" > 138< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN139" > 139< / td > < td class = "line" > < span class = 'comment' > * ipio2[i] * 2^(-24(i+1)).< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN140" > 140< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN141" > 141< / td > < td class = "line" > < span class = 'comment' > * External function:< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN142" > 142< / td > < td class = "line" > < span class = 'comment' > * double scalbn(), floor();< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN143" > 143< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN144" > 144< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN145" > 145< / td > < td class = "line" > < span class = 'comment' > * Here is the description of some local variables:< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN146" > 146< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN147" > 147< / td > < td class = "line" > < span class = 'comment' > * jk jk+1 is the initial number of terms of ipio2[] needed< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN148" > 148< / td > < td class = "line" > < span class = 'comment' > * in the computation. The recommended value is 2,3,4,< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN149" > 149< / td > < td class = "line" > < span class = 'comment' > * 6 for single, double, extended,and quad.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN150" > 150< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN151" > 151< / td > < td class = "line" > < span class = 'comment' > * jz local integer variable indicating the number of< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN152" > 152< / td > < td class = "line" > < span class = 'comment' > * terms of ipio2[] used.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN153" > 153< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN154" > 154< / td > < td class = "line" > < span class = 'comment' > * jx nx - 1< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN155" > 155< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN156" > 156< / td > < td class = "line" > < span class = 'comment' > * jv index for pointing to the suitable ipio2[] for the< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN157" > 157< / td > < td class = "line" > < span class = 'comment' > * computation. In general, we want< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN158" > 158< / td > < td class = "line" > < span class = 'comment' > * ( 2^e0*x[0] * ipio2[jv-1]*2^(-24jv) )/8< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN159" > 159< / td > < td class = "line" > < span class = 'comment' > * is an integer. Thus< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN160" > 160< / td > < td class = "line" > < span class = 'comment' > * e0-3-24*jv > = 0 or (e0-3)/24 > = jv< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN161" > 161< / td > < td class = "line" > < span class = 'comment' > * Hence jv = max(0,(e0-3)/24).< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN162" > 162< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN163" > 163< / td > < td class = "line" > < span class = 'comment' > * jp jp+1 is the number of terms in PIo2[] needed, jp = jk.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN164" > 164< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN165" > 165< / td > < td class = "line" > < span class = 'comment' > * q[] double array with integral value, representing the< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN166" > 166< / td > < td class = "line" > < span class = 'comment' > * 24-bits chunk of the product of x and 2/pi.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN167" > 167< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN168" > 168< / td > < td class = "line" > < span class = 'comment' > * q0 the corresponding exponent of q[0]. Note that the< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN169" > 169< / td > < td class = "line" > < span class = 'comment' > * exponent for q[i] would be q0-24*i.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN170" > 170< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN171" > 171< / td > < td class = "line" > < span class = 'comment' > * PIo2[] double precision array, obtained by cutting pi/2< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN172" > 172< / td > < td class = "line" > < span class = 'comment' > * into 24 bits chunks.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN173" > 173< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN174" > 174< / td > < td class = "line" > < span class = 'comment' > * f[] ipio2[] in floating point< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN175" > 175< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN176" > 176< / td > < td class = "line" > < span class = 'comment' > * iq[] integer array by breaking up q[] in 24-bits chunk.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN177" > 177< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN178" > 178< / td > < td class = "line" > < span class = 'comment' > * fq[] final product of x*(2/pi) in fq[0],..,fq[jk]< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN179" > 179< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN180" > 180< / td > < td class = "line" > < span class = 'comment' > * ih integer. If > 0 it indicates q[] is > = 0.5, hence< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN181" > 181< / td > < td class = "line" > < span class = 'comment' > * it also indicates the *sign* of the result.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN182" > 182< / td > < td class = "line" > < span class = 'comment' > *< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN183" > 183< / td > < td class = "line" > < span class = 'comment' > * < /pre> < / span > < / td > < / tr >
< tr > < td class = "num" id = "LN184" > 184< / td > < td class = "line" > < span class = 'comment' > * @copyright Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN185" > 185< / td > < td class = "line" > < span class = 'comment' > * @license Developed at SunSoft, a Sun Microsystems, Inc. business. Permission< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN186" > 186< / td > < td class = "line" > < span class = 'comment' > * to use, copy, modify, and distribute this software is freely granted,< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN187" > 187< / td > < td class = "line" > < span class = 'comment' > * provided that this notice is preserved.< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN188" > 188< / td > < td class = "line" > < span class = 'comment' > */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN189" > 189< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN190" > 190< / td > < td class = "line" > < span class = 'keyword' > int< / span > __kernel_rem_pio2(< span class = 'keyword' > double< / span > *x, < span class = 'keyword' > double< / span > *y, < span class = 'keyword' > int< / span > e0, < span class = 'keyword' > int< / span > nx, < span class = 'keyword' > int< / span > prec, < span class = 'keyword' > const< / span > < span class = 'keyword' > int< / span > *ipio2)< / td > < / tr >
< tr > < td class = "num" id = "LN191" > 191< / td > < td class = "line" > {< / td > < / tr >
< tr > < td class = "num" id = "LN192" > 192< / td > < td class = "line" > < span class = 'keyword' > int< / span > jz,jx,jv,jp,jk,carry,n,iq[20],i,j,k,m,q0,ih;< / td > < / tr >
< tr > < td class = "num" id = "LN193" > 193< / td > < td class = "line" > < span class = 'keyword' > double< / span > z,fw,f[20],fq[20],q[20];< / td > < / tr >
< tr > < td class = "num" id = "LN194" > 194< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN195" > 195< / td > < td class = "line" > < span class = 'comment' > /* initialize jk*/< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN196" > 196< / td > < td class = "line" > jk = init_jk[prec];< / td > < / tr >
< tr > < td class = "num" id = "LN197" > 197< / td > < td class = "line" > jp = jk;< / td > < / tr >
< tr > < td class = "num" id = "LN198" > 198< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN199" > 199< / td > < td class = "line" > < span class = 'comment' > /* determine jx,jv,q0, note that 3> q0 */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN200" > 200< / td > < td class = "line" > jx = nx-1;< / td > < / tr >
< tr > < td class = "num" id = "LN201" > 201< / td > < td class = "line" > jv = (e0-3)/24;< / td > < / tr >
< tr > < td class = "num" id = "LN202" > 202< / td > < td class = "line" > < span class = 'keyword' > if< / span > (< span class = "mrange" > jv< 0< / span > ) jv=0;< / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path1" class = "msg msgEvent" style = "margin-left:8ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexEvent" > 1< / div > < / td > < td > Assuming 'jv' is > = 0< / td > < td > < div class = "PathNav" > < a href = "#Path2" title = "Next event (2)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path2" class = "msg msgControl" style = "margin-left:5ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexControl" > 2< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path1" title = "Previous event (1)" > ← < / a > < / div > < / td > < / td > < td > Taking false branch< / td > < td > < div class = "PathNav" > < a href = "#Path3" title = "Next event (3)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" id = "LN203" > 203< / td > < td class = "line" > q0 = e0-24*(jv+1);< / td > < / tr >
< tr > < td class = "num" id = "LN204" > 204< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN205" > 205< / td > < td class = "line" > < span class = 'comment' > /* set up f[0] to f[jx+jk] where f[jx+jk] = ipio2[jv+jk] */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN206" > 206< / td > < td class = "line" > j = jv-jx;< / td > < / tr >
< tr > < td class = "num" id = "LN207" > 207< / td > < td class = "line" > m = jx+jk;< / td > < / tr >
< tr > < td class = "num" id = "LN208" > 208< / td > < td class = "line" > < span class = 'keyword' > for< / span > (i=0; < span class = "mrange" > i< =m< / span > ; i++,j++) f[i] = (j< 0)? zero : (< span class = 'keyword' > double< / span > ) ipio2[j];< / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path3" class = "msg msgEvent" style = "margin-left:14ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexEvent" > 3< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path2" title = "Previous event (2)" > ← < / a > < / div > < / td > < / td > < td > Assuming 'i' is > 'm'< / td > < td > < div class = "PathNav" > < a href = "#Path4" title = "Next event (4)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path4" class = "msg msgControl" style = "margin-left:5ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexControl" > 4< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path3" title = "Previous event (3)" > ← < / a > < / div > < / td > < / td > < td > Loop condition is false. Execution continues on line 211< / td > < td > < div class = "PathNav" > < a href = "#Path5" title = "Next event (5)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" id = "LN209" > 209< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN210" > 210< / td > < td class = "line" > < span class = 'comment' > /* compute q[0],q[1],...q[jk] */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN211" > 211< / td > < td class = "line" > < span class = 'keyword' > for< / span > (i=0; < span class = "mrange" > i< =jk< / span > ; i++) {< / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path5" class = "msg msgEvent" style = "margin-left:15ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexEvent" > 5< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path4" title = "Previous event (4)" > ← < / a > < / div > < / td > < / td > < td > Assuming 'i' is > 'jk'< / td > < td > < div class = "PathNav" > < a href = "#Path6" title = "Next event (6)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path6" class = "msg msgControl" style = "margin-left:5ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexControl" > 6< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path5" title = "Previous event (5)" > ← < / a > < / div > < / td > < / td > < td > Loop condition is false. Execution continues on line 216< / td > < td > < div class = "PathNav" > < a href = "#Path7" title = "Next event (7)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" id = "LN212" > 212< / td > < td class = "line" > < span class = 'keyword' > for< / span > (j=0,fw=0.0; j< =jx; j++) fw += x[j]*f[jx+i-j];< / td > < / tr >
< tr > < td class = "num" id = "LN213" > 213< / td > < td class = "line" > q[i] = fw;< / td > < / tr >
< tr > < td class = "num" id = "LN214" > 214< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN215" > 215< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN216" > 216< / td > < td class = "line" > jz = jk;< / td > < / tr >
< tr > < td class = "num" id = "LN217" > 217< / td > < td class = "line" > recompute:< / td > < / tr >
< tr > < td class = "num" id = "LN218" > 218< / td > < td class = "line" > < span class = 'comment' > /* distill q[] into iq[] reversingly */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN219" > 219< / td > < td class = "line" > < span class = 'keyword' > for< / span > (i=0,j=jz,z=q[jz]; j> 0; i++,j--) {< / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path7" class = "msg msgControl" style = "margin-left:5ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexControl" > 7< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path6" title = "Previous event (6)" > ← < / a > < / div > < / td > < / td > < td > Loop condition is false. Execution continues on line 226< / td > < td > < div class = "PathNav" > < a href = "#Path8" title = "Next event (8)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" id = "LN220" > 220< / td > < td class = "line" > fw = (< span class = 'keyword' > double< / span > )((< span class = 'keyword' > int< / span > )(twon24* z));< / td > < / tr >
< tr > < td class = "num" id = "LN221" > 221< / td > < td class = "line" > iq[i] = (< span class = 'keyword' > int< / span > )(z-two24*fw);< / td > < / tr >
< tr > < td class = "num" id = "LN222" > 222< / td > < td class = "line" > z = q[j-1]+fw;< / td > < / tr >
< tr > < td class = "num" id = "LN223" > 223< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN224" > 224< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN225" > 225< / td > < td class = "line" > < span class = 'comment' > /* compute n */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN226" > 226< / td > < td class = "line" > z = scalbn(z,q0); < span class = 'comment' > /* actual value of z */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN227" > 227< / td > < td class = "line" > z -= 8.0*floor(z*0.125); < span class = 'comment' > /* trim off integer > = 8 */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN228" > 228< / td > < td class = "line" > n = (< span class = 'keyword' > int< / span > ) z;< / td > < / tr >
< tr > < td class = "num" id = "LN229" > 229< / td > < td class = "line" > z -= (< span class = 'keyword' > double< / span > )n;< / td > < / tr >
< tr > < td class = "num" id = "LN230" > 230< / td > < td class = "line" > ih = 0;< / td > < / tr >
< tr > < td class = "num" id = "LN231" > 231< / td > < td class = "line" > < span class = 'keyword' > if< / span > (< span class = "mrange" > q0> 0< / span > ) { < span class = 'comment' > /* need iq[jz-1] to determine n */< / span > < / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path8" class = "msg msgEvent" style = "margin-left:8ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexEvent" > 8< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path7" title = "Previous event (7)" > ← < / a > < / div > < / td > < / td > < td > Assuming 'q0' is < = 0< / td > < td > < div class = "PathNav" > < a href = "#Path9" title = "Next event (9)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path9" class = "msg msgControl" style = "margin-left:5ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexControl" > 9< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path8" title = "Previous event (8)" > ← < / a > < / div > < / td > < / td > < td > Taking false branch< / td > < td > < div class = "PathNav" > < a href = "#Path10" title = "Next event (10)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" id = "LN232" > 232< / td > < td class = "line" > i = (iq[jz-1]> > (24-q0));< / td > < / tr >
< tr > < td class = "num" id = "LN233" > 233< / td > < td class = "line" > n += i;< / td > < / tr >
< tr > < td class = "num" id = "LN234" > 234< / td > < td class = "line" > iq[jz-1] -= i< < (24-q0);< / td > < / tr >
< tr > < td class = "num" id = "LN235" > 235< / td > < td class = "line" > ih = iq[jz-1]> > (23-q0);< / td > < / tr >
< tr > < td class = "num" id = "LN236" > 236< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN237" > 237< / td > < td class = "line" > < span class = 'keyword' > else< / span > < span class = 'keyword' > if< / span > (< span class = "mrange" > q0==0< / span > ) ih = iq[jz-1]> > 23;< / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path10" class = "msg msgEvent" style = "margin-left:13ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexEvent" > 10< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path9" title = "Previous event (9)" > ← < / a > < / div > < / td > < / td > < td > Assuming 'q0' is not equal to 0< / td > < td > < div class = "PathNav" > < a href = "#Path11" title = "Next event (11)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path11" class = "msg msgControl" style = "margin-left:10ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexControl" > 11< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path10" title = "Previous event (10)" > ← < / a > < / div > < / td > < / td > < td > Taking false branch< / td > < td > < div class = "PathNav" > < a href = "#Path12" title = "Next event (12)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" id = "LN238" > 238< / td > < td class = "line" > < span class = 'keyword' > else< / span > < span class = 'keyword' > if< / span > (z> =0.5) ih=2;< / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path12" class = "msg msgControl" style = "margin-left:10ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexControl" > 12< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path11" title = "Previous event (11)" > ← < / a > < / div > < / td > < / td > < td > Taking false branch< / td > < td > < div class = "PathNav" > < a href = "#Path13" title = "Next event (13)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" id = "LN239" > 239< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN240" > 240< / td > < td class = "line" > < span class = 'keyword' > if< / span > (ih> 0) { < span class = 'comment' > /* q > 0.5 */< / span > < / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path13" class = "msg msgControl" style = "margin-left:5ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexControl" > 13< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path12" title = "Previous event (12)" > ← < / a > < / div > < / td > < / td > < td > Taking false branch< / td > < td > < div class = "PathNav" > < a href = "#Path14" title = "Next event (14)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" id = "LN241" > 241< / td > < td class = "line" > n += 1;< / td > < / tr >
< tr > < td class = "num" id = "LN242" > 242< / td > < td class = "line" > carry = 0;< / td > < / tr >
< tr > < td class = "num" id = "LN243" > 243< / td > < td class = "line" > < span class = 'keyword' > for< / span > (i=0; i< jz ; i++) { < span class = 'comment' > /* compute 1-q */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN244" > 244< / td > < td class = "line" > j = iq[i];< / td > < / tr >
< tr > < td class = "num" id = "LN245" > 245< / td > < td class = "line" > < span class = 'keyword' > if< / span > (carry==0) {< / td > < / tr >
< tr > < td class = "num" id = "LN246" > 246< / td > < td class = "line" > < span class = 'keyword' > if< / span > (j!=0) {< / td > < / tr >
< tr > < td class = "num" id = "LN247" > 247< / td > < td class = "line" > carry = 1;< / td > < / tr >
< tr > < td class = "num" id = "LN248" > 248< / td > < td class = "line" > iq[i] = 0x1000000- j;< / td > < / tr >
< tr > < td class = "num" id = "LN249" > 249< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN250" > 250< / td > < td class = "line" > } < span class = 'keyword' > else< / span > iq[i] = 0xffffff - j;< / td > < / tr >
< tr > < td class = "num" id = "LN251" > 251< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN252" > 252< / td > < td class = "line" > < span class = 'keyword' > if< / span > (q0> 0) { < span class = 'comment' > /* rare case: chance is 1 in 12 */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN253" > 253< / td > < td class = "line" > < span class = 'keyword' > switch< / span > (q0) {< / td > < / tr >
< tr > < td class = "num" id = "LN254" > 254< / td > < td class = "line" > < span class = 'keyword' > case< / span > 1:< / td > < / tr >
< tr > < td class = "num" id = "LN255" > 255< / td > < td class = "line" > iq[jz-1] & = 0x7fffff;< / td > < / tr >
< tr > < td class = "num" id = "LN256" > 256< / td > < td class = "line" > < span class = 'keyword' > break< / span > ;< / td > < / tr >
< tr > < td class = "num" id = "LN257" > 257< / td > < td class = "line" > < span class = 'keyword' > case< / span > 2:< / td > < / tr >
< tr > < td class = "num" id = "LN258" > 258< / td > < td class = "line" > iq[jz-1] & = 0x3fffff;< / td > < / tr >
< tr > < td class = "num" id = "LN259" > 259< / td > < td class = "line" > < span class = 'keyword' > break< / span > ;< / td > < / tr >
< tr > < td class = "num" id = "LN260" > 260< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN261" > 261< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN262" > 262< / td > < td class = "line" > < span class = 'keyword' > if< / span > (ih==2) {< / td > < / tr >
< tr > < td class = "num" id = "LN263" > 263< / td > < td class = "line" > z = one - z;< / td > < / tr >
< tr > < td class = "num" id = "LN264" > 264< / td > < td class = "line" > < span class = 'keyword' > if< / span > (carry!=0) z -= scalbn(one,q0);< / td > < / tr >
< tr > < td class = "num" id = "LN265" > 265< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN266" > 266< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN267" > 267< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN268" > 268< / td > < td class = "line" > < span class = 'comment' > /* check if recomputation is needed */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN269" > 269< / td > < td class = "line" > < span class = 'keyword' > if< / span > (z==zero) {< / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path14" class = "msg msgControl" style = "margin-left:5ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexControl" > 14< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path13" title = "Previous event (13)" > ← < / a > < / div > < / td > < / td > < td > Taking false branch< / td > < td > < div class = "PathNav" > < a href = "#Path15" title = "Next event (15)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" id = "LN270" > 270< / td > < td class = "line" > j = 0;< / td > < / tr >
< tr > < td class = "num" id = "LN271" > 271< / td > < td class = "line" > < span class = 'keyword' > for< / span > (i=jz-1; i> =jk; i--) j |= iq[i];< / td > < / tr >
< tr > < td class = "num" id = "LN272" > 272< / td > < td class = "line" > < span class = 'keyword' > if< / span > (j==0) { < span class = 'comment' > /* need recomputation */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN273" > 273< / td > < td class = "line" > < span class = 'keyword' > for< / span > (k=1; iq[jk-k]==0; k++); < span class = 'comment' > /* k = no. of terms needed */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN274" > 274< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN275" > 275< / td > < td class = "line" > < span class = 'keyword' > for< / span > (i=jz+1; i< =jz+k; i++) { < span class = 'comment' > /* add q[jz+1] to q[jz+k] */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN276" > 276< / td > < td class = "line" > f[jx+i] = (< span class = 'keyword' > double< / span > ) ipio2[jv+i];< / td > < / tr >
< tr > < td class = "num" id = "LN277" > 277< / td > < td class = "line" > < span class = 'keyword' > for< / span > (j=0,fw=0.0; j< =jx; j++) fw += x[j]*f[jx+i-j];< / td > < / tr >
< tr > < td class = "num" id = "LN278" > 278< / td > < td class = "line" > q[i] = fw;< / td > < / tr >
< tr > < td class = "num" id = "LN279" > 279< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN280" > 280< / td > < td class = "line" > jz += k;< / td > < / tr >
< tr > < td class = "num" id = "LN281" > 281< / td > < td class = "line" > < span class = 'keyword' > goto< / span > recompute;< / td > < / tr >
< tr > < td class = "num" id = "LN282" > 282< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN283" > 283< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN284" > 284< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN285" > 285< / td > < td class = "line" > < span class = 'comment' > /* chop off zero terms */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN286" > 286< / td > < td class = "line" > < span class = 'keyword' > if< / span > (z==0.0) {< / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path15" class = "msg msgControl" style = "margin-left:5ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexControl" > 15< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path14" title = "Previous event (14)" > ← < / a > < / div > < / td > < / td > < td > Taking true branch< / td > < td > < div class = "PathNav" > < a href = "#Path16" title = "Next event (16)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" id = "LN287" > 287< / td > < td class = "line" > jz -= 1;< / td > < / tr >
< tr > < td class = "num" id = "LN288" > 288< / td > < td class = "line" > q0 -= 24;< / td > < / tr >
< tr > < td class = "num" id = "LN289" > 289< / td > < td class = "line" > < span class = 'keyword' > while< / span > (iq[jz]==0) {< / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path16" class = "msg msgControl" style = "margin-left:9ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexControl" > 16< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path15" title = "Previous event (15)" > ← < / a > < / div > < / td > < / td > < td > Loop condition is false. Execution continues on line 305< / td > < td > < div class = "PathNav" > < a href = "#Path17" title = "Next event (17)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" id = "LN290" > 290< / td > < td class = "line" > jz--;< / td > < / tr >
< tr > < td class = "num" id = "LN291" > 291< / td > < td class = "line" > q0-=24;< / td > < / tr >
< tr > < td class = "num" id = "LN292" > 292< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN293" > 293< / td > < td class = "line" > } < span class = 'keyword' > else< / span > { < span class = 'comment' > /* break z into 24-bit if necessary */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN294" > 294< / td > < td class = "line" > z = scalbn(z,-q0);< / td > < / tr >
< tr > < td class = "num" id = "LN295" > 295< / td > < td class = "line" > < span class = 'keyword' > if< / span > (z> =two24) {< / td > < / tr >
< tr > < td class = "num" id = "LN296" > 296< / td > < td class = "line" > fw = (< span class = 'keyword' > double< / span > )((< span class = 'keyword' > int< / span > )(twon24*z));< / td > < / tr >
< tr > < td class = "num" id = "LN297" > 297< / td > < td class = "line" > iq[jz] = (< span class = 'keyword' > int< / span > )(z-two24*fw);< / td > < / tr >
< tr > < td class = "num" id = "LN298" > 298< / td > < td class = "line" > jz += 1;< / td > < / tr >
< tr > < td class = "num" id = "LN299" > 299< / td > < td class = "line" > q0 += 24;< / td > < / tr >
< tr > < td class = "num" id = "LN300" > 300< / td > < td class = "line" > iq[jz] = (< span class = 'keyword' > int< / span > ) fw;< / td > < / tr >
< tr > < td class = "num" id = "LN301" > 301< / td > < td class = "line" > } < span class = 'keyword' > else< / span > iq[jz] = (< span class = 'keyword' > int< / span > ) z ;< / td > < / tr >
< tr > < td class = "num" id = "LN302" > 302< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN303" > 303< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN304" > 304< / td > < td class = "line" > < span class = 'comment' > /* convert integer "bit" chunk to floating-point value */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN305" > 305< / td > < td class = "line" > fw = scalbn(one,q0);< / td > < / tr >
< tr > < td class = "num" id = "LN306" > 306< / td > < td class = "line" > < span class = 'keyword' > for< / span > (i=jz; < span class = "mrange" > i> =0< / span > ; i--) {< / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path17" class = "msg msgEvent" style = "margin-left:15ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexEvent" > 17< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path16" title = "Previous event (16)" > ← < / a > < / div > < / td > < / td > < td > Assuming 'i' is < 0< / td > < td > < div class = "PathNav" > < a href = "#Path18" title = "Next event (18)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path18" class = "msg msgControl" style = "margin-left:5ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexControl" > 18< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path17" title = "Previous event (17)" > ← < / a > < / div > < / td > < / td > < td > Loop condition is false. Execution continues on line 312< / td > < td > < div class = "PathNav" > < a href = "#Path19" title = "Next event (19)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" id = "LN307" > 307< / td > < td class = "line" > q[i] = fw*(< span class = 'keyword' > double< / span > )iq[i];< / td > < / tr >
< tr > < td class = "num" id = "LN308" > 308< / td > < td class = "line" > fw*=twon24;< / td > < / tr >
< tr > < td class = "num" id = "LN309" > 309< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN310" > 310< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN311" > 311< / td > < td class = "line" > < span class = 'comment' > /* compute PIo2[0,...,jp]*q[jz,...,0] */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN312" > 312< / td > < td class = "line" > < span class = 'keyword' > for< / span > (i=jz; i> =0; i--) {< / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path19" class = "msg msgControl" style = "margin-left:5ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexControl" > 19< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path18" title = "Previous event (18)" > ← < / a > < / div > < / td > < / td > < td > Loop condition is false. Execution continues on line 318< / td > < td > < div class = "PathNav" > < a href = "#Path20" title = "Next event (20)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" id = "LN313" > 313< / td > < td class = "line" > < span class = 'keyword' > for< / span > (fw=0.0,k=0; k< =jp& & k< =jz-i; k++) fw += PIo2[k]*q[i+k];< / td > < / tr >
< tr > < td class = "num" id = "LN314" > 314< / td > < td class = "line" > fq[jz-i] = fw;< / td > < / tr >
< tr > < td class = "num" id = "LN315" > 315< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN316" > 316< / td > < td class = "line" > < / td > < / tr >
< tr > < td class = "num" id = "LN317" > 317< / td > < td class = "line" > < span class = 'comment' > /* compress fq[] into y[] */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN318" > 318< / td > < td class = "line" > < span class = 'keyword' > switch< / span > (prec) {< / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path20" class = "msg msgControl" style = "margin-left:5ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexControl" > 20< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path19" title = "Previous event (19)" > ← < / a > < / div > < / td > < / td > < td > Control jumps to 'case 2:' at line 325< / td > < td > < div class = "PathNav" > < a href = "#Path21" title = "Next event (21)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" id = "LN319" > 319< / td > < td class = "line" > < span class = 'keyword' > case< / span > 0:< / td > < / tr >
< tr > < td class = "num" id = "LN320" > 320< / td > < td class = "line" > fw = 0.0;< / td > < / tr >
< tr > < td class = "num" id = "LN321" > 321< / td > < td class = "line" > < span class = 'keyword' > for< / span > (i=jz; i> =0; i--) fw += fq[i];< / td > < / tr >
< tr > < td class = "num" id = "LN322" > 322< / td > < td class = "line" > y[0] = (ih==0)? fw: -fw;< / td > < / tr >
< tr > < td class = "num" id = "LN323" > 323< / td > < td class = "line" > < span class = 'keyword' > break< / span > ;< / td > < / tr >
< tr > < td class = "num" id = "LN324" > 324< / td > < td class = "line" > < span class = 'keyword' > case< / span > 1:< / td > < / tr >
< tr > < td class = "num" id = "LN325" > 325< / td > < td class = "line" > < span class = 'keyword' > case< / span > 2:< / td > < / tr >
< tr > < td class = "num" id = "LN326" > 326< / td > < td class = "line" > fw = 0.0;< / td > < / tr >
< tr > < td class = "num" id = "LN327" > 327< / td > < td class = "line" > < span class = 'keyword' > for< / span > (i=jz; i> =0; i--) fw += fq[i];< / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path21" class = "msg msgControl" style = "margin-left:9ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexControl" > 21< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path20" title = "Previous event (20)" > ← < / a > < / div > < / td > < / td > < td > Loop condition is false. Execution continues on line 328< / td > < td > < div class = "PathNav" > < a href = "#Path22" title = "Next event (22)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" id = "LN328" > 328< / td > < td class = "line" > y[0] = (ih==0)? fw: -fw;< / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "Path22" class = "msg msgControl" style = "margin-left:16ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexControl" > 22< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path21" title = "Previous event (21)" > ← < / a > < / div > < / td > < / td > < td > '?' condition is true< / td > < td > < div class = "PathNav" > < a href = "#EndPath" title = "Next event (23)" > → < / a > < / div > < / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" id = "LN329" > 329< / td > < td class = "line" > fw = < span class = "mrange" > fq[0]< / span > -fw;< / td > < / tr >
< tr > < td class = "num" > < / td > < td class = "line" > < div id = "EndPath" class = "msg msgEvent" style = "margin-left:19ex" > < table class = "msgT" > < tr > < td valign = "top" > < div class = "PathIndex PathIndexEvent" > 23< / div > < / td > < td > < div class = "PathNav" > < a href = "#Path22" title = "Previous event (22)" > ← < / a > < / div > < / td > < / td > < td > The left operand of '-' is a garbage value< / td > < / tr > < / table > < / div > < / td > < / tr >
< tr > < td class = "num" id = "LN330" > 330< / td > < td class = "line" > < span class = 'keyword' > for< / span > (i=1; i< =jz; i++) fw += fq[i];< / td > < / tr >
< tr > < td class = "num" id = "LN331" > 331< / td > < td class = "line" > y[1] = (ih==0)? fw: -fw;< / td > < / tr >
< tr > < td class = "num" id = "LN332" > 332< / td > < td class = "line" > < span class = 'keyword' > break< / span > ;< / td > < / tr >
< tr > < td class = "num" id = "LN333" > 333< / td > < td class = "line" > < span class = 'keyword' > case< / span > 3: < span class = 'comment' > /* painful */< / span > < / td > < / tr >
< tr > < td class = "num" id = "LN334" > 334< / td > < td class = "line" > < span class = 'keyword' > for< / span > (i=jz; i> 0; i--) {< / td > < / tr >
< tr > < td class = "num" id = "LN335" > 335< / td > < td class = "line" > fw = fq[i-1]+fq[i];< / td > < / tr >
< tr > < td class = "num" id = "LN336" > 336< / td > < td class = "line" > fq[i] += fq[i-1]-fw;< / td > < / tr >
< tr > < td class = "num" id = "LN337" > 337< / td > < td class = "line" > fq[i-1] = fw;< / td > < / tr >
< tr > < td class = "num" id = "LN338" > 338< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN339" > 339< / td > < td class = "line" > < span class = 'keyword' > for< / span > (i=jz; i> 1; i--) {< / td > < / tr >
< tr > < td class = "num" id = "LN340" > 340< / td > < td class = "line" > fw = fq[i-1]+fq[i];< / td > < / tr >
< tr > < td class = "num" id = "LN341" > 341< / td > < td class = "line" > fq[i] += fq[i-1]-fw;< / td > < / tr >
< tr > < td class = "num" id = "LN342" > 342< / td > < td class = "line" > fq[i-1] = fw;< / td > < / tr >
< tr > < td class = "num" id = "LN343" > 343< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN344" > 344< / td > < td class = "line" > < span class = 'keyword' > for< / span > (fw=0.0,i=jz; i> =2; i--) fw += fq[i];< / td > < / tr >
< tr > < td class = "num" id = "LN345" > 345< / td > < td class = "line" > < span class = 'keyword' > if< / span > (ih==0) {< / td > < / tr >
< tr > < td class = "num" id = "LN346" > 346< / td > < td class = "line" > y[0] = fq[0];< / td > < / tr >
< tr > < td class = "num" id = "LN347" > 347< / td > < td class = "line" > y[1] = fq[1];< / td > < / tr >
< tr > < td class = "num" id = "LN348" > 348< / td > < td class = "line" > y[2] = fw;< / td > < / tr >
< tr > < td class = "num" id = "LN349" > 349< / td > < td class = "line" > } < span class = 'keyword' > else< / span > {< / td > < / tr >
< tr > < td class = "num" id = "LN350" > 350< / td > < td class = "line" > y[0] = -fq[0];< / td > < / tr >
< tr > < td class = "num" id = "LN351" > 351< / td > < td class = "line" > y[1] = -fq[1];< / td > < / tr >
< tr > < td class = "num" id = "LN352" > 352< / td > < td class = "line" > y[2] = -fw;< / td > < / tr >
< tr > < td class = "num" id = "LN353" > 353< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN354" > 354< / td > < td class = "line" > }< / td > < / tr >
< tr > < td class = "num" id = "LN355" > 355< / td > < td class = "line" > < span class = 'keyword' > return< / span > n& 7;< / td > < / tr >
< tr > < td class = "num" id = "LN356" > 356< / td > < td class = "line" > }< / td > < / tr >
< / table > < / body > < / html >