25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/*
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * CDDL HEADER START
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * The contents of this file are subject to the terms of the
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Common Development and Distribution License (the "License").
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * You may not use this file except in compliance with the License.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * or http://www.opensolaris.org/os/licensing.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * See the License for the specific language governing permissions
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * and limitations under the License.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * When distributing Covered Code, include this CDDL HEADER in each
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * If applicable, add the following below this CDDL HEADER, with the
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * fields enclosed by brackets "[]" replaced with your own identifying
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * information: Portions Copyright [yyyy] [name of copyright owner]
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * CDDL HEADER END
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/*
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Copyright 2011 Nexenta Systems, Inc. All rights reserved.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/*
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Use is subject to license terms.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis/*
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * __vsinf: single precision vector sin
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Algorithm:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * For |x| < pi/4, approximate sin(x) by a polynomial x+x*z*(S0+
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * z*(S1+z*S2)) and cos(x) by a polynomial 1+z*(-1/2+z*(C0+z*(C1+
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * z*C2))), where z = x*x, all evaluated in double precision.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * Accuracy:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis * The largest error is less than 0.6 ulps.
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#include <sys/isa_defs.h>
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#ifdef _LITTLE_ENDIAN
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define HI(x) *(1+(int *)&x)
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define LO(x) *(unsigned *)&x
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#else
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define HI(x) *(int *)&x
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define LO(x) *(1+(unsigned *)&x)
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#endif
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#ifdef __RESTRICT
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define restrict _Restrict
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#else
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define restrict
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#endif
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisextern int __vlibm_rem_pio2m(double *, double *, int, int, int);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisstatic const double C[] = {
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis -1.66666552424430847168e-01, /* 2^ -3 * -1.5555460000000 */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis 8.33219196647405624390e-03, /* 2^ -7 * 1.11077E0000000 */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis -1.95187909412197768688e-04, /* 2^-13 * -1.9956B60000000 */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis 1.0,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis -0.5,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis 4.16666455566883087158e-02, /* 2^ -5 * 1.55554A0000000 */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis -1.38873036485165357590e-03, /* 2^-10 * -1.6C0C1E0000000 */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis 2.44309903791872784495e-05, /* 2^-16 * 1.99E24E0000000 */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis 0.636619772367581343075535, /* 2^ -1 * 1.45F306DC9C883 */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis 6755399441055744.0, /* 2^ 52 * 1.8000000000000 */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis 1.570796326734125614166, /* 2^ 0 * 1.921FB54400000 */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis 6.077100506506192601475e-11, /* 2^-34 * 1.0B4611A626331 */
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis};
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define S0 C[0]
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define S1 C[1]
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define S2 C[2]
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define one C[3]
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define mhalf C[4]
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define C0 C[5]
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define C1 C[6]
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define C2 C[7]
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define invpio2 C[8]
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define c3two51 C[9]
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define pio2_1 C[10]
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define pio2_t C[11]
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PREPROCESS(N, index, label) \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis hx = *(int *)x; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis ix = hx & 0x7fffffff; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis t = *x; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis x += stridex; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis if (ix <= 0x3f490fdb) { /* |x| < pi/4 */ \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis if (ix == 0) { \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis y[index] = t; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis goto label; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis } \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis y##N = (double)t; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis n##N = 0; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis } else if (ix <= 0x49c90fdb) { /* |x| < 2^19*pi */ \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis y##N = (double)t; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis medium = 1; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis } else { \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis if (ix >= 0x7f800000) { /* inf or nan */ \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis y[index] = t / t; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis goto label; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis } \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z##N = y##N = (double)t; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis hx = HI(y##N); \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis n##N = ((hx >> 20) & 0x7ff) - 1046; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis HI(z##N) = (hx & 0xfffff) | 0x41600000; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis n##N = __vlibm_rem_pio2m(&z##N, &y##N, n##N, 1, 0); \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis if (hx < 0) { \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis y##N = -y##N; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis n##N = -n##N; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis } \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z##N = y##N * y##N; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis if (n##N & 1) { /* compute cos y */ \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f##N = (float)(one + z##N * (mhalf + z##N * \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis (C0 + z##N * (C1 + z##N * C2)))); \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis } else { /* compute sin y */ \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f##N = (float)(y##N + y##N * z##N * (S0 + \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z##N * (S1 + z##N * S2))); \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis } \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis y[index] = (n##N & 2)? -f##N : f##N; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis goto label; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis }
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis#define PROCESS(N) \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis if (medium) { \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z##N = y##N * invpio2 + c3two51; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis n##N = LO(z##N); \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z##N -= c3two51; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis y##N = (y##N - z##N * pio2_1) - z##N * pio2_t; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis } \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z##N = y##N * y##N; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis if (n##N & 1) { /* compute cos y */ \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f##N = (float)(one + z##N * (mhalf + z##N * (C0 + \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z##N * (C1 + z##N * C2)))); \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis } else { /* compute sin y */ \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f##N = (float)(y##N + y##N * z##N * (S0 + z##N * (S1 + \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z##N * S2))); \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis } \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *y = (n##N & 2)? -f##N : f##N; \
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis y += stridey
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisvoid
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis__vsinf(int n, float *restrict x, int stridex, float *restrict y,
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis int stridey)
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis{
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis double y0, y1, y2, y3;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis double z0, z1, z2, z3;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis float f0, f1, f2, f3, t;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis int n0 = 0, n1 = 0, n2 = 0, n3, hx, ix, medium;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis y -= stridey;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis for (;;) {
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisbegin:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis y += stridey;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis if (--n < 0)
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis break;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis medium = 0;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis PREPROCESS(0, 0, begin);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis if (--n < 0)
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis goto process1;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis PREPROCESS(1, stridey, process1);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis if (--n < 0)
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis goto process2;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis PREPROCESS(2, (stridey << 1), process2);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis if (--n < 0)
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis goto process3;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis PREPROCESS(3, (stridey << 1) + stridey, process3);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis if (medium) {
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z0 = y0 * invpio2 + c3two51;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z1 = y1 * invpio2 + c3two51;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z2 = y2 * invpio2 + c3two51;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z3 = y3 * invpio2 + c3two51;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis n0 = LO(z0);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis n1 = LO(z1);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis n2 = LO(z2);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis n3 = LO(z3);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z0 -= c3two51;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z1 -= c3two51;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z2 -= c3two51;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z3 -= c3two51;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis y0 = (y0 - z0 * pio2_1) - z0 * pio2_t;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis y1 = (y1 - z1 * pio2_1) - z1 * pio2_t;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis y2 = (y2 - z2 * pio2_1) - z2 * pio2_t;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis y3 = (y3 - z3 * pio2_1) - z3 * pio2_t;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis }
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z0 = y0 * y0;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z1 = y1 * y1;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z2 = y2 * y2;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z3 = y3 * y3;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis hx = (n0 & 1) | ((n1 & 1) << 1) | ((n2 & 1) << 2) |
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis ((n3 & 1) << 3);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis switch (hx) {
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis case 0:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f0 = (float)(y0 + y0 * z0 * (S0 + z0 * (S1 + z0 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f1 = (float)(y1 + y1 * z1 * (S0 + z1 * (S1 + z1 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f2 = (float)(y2 + y2 * z2 * (S0 + z2 * (S1 + z2 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f3 = (float)(y3 + y3 * z3 * (S0 + z3 * (S1 + z3 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis break;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis case 1:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f0 = (float)(one + z0 * (mhalf + z0 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z0 * (C1 + z0 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f1 = (float)(y1 + y1 * z1 * (S0 + z1 * (S1 + z1 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f2 = (float)(y2 + y2 * z2 * (S0 + z2 * (S1 + z2 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f3 = (float)(y3 + y3 * z3 * (S0 + z3 * (S1 + z3 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis break;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis case 2:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f0 = (float)(y0 + y0 * z0 * (S0 + z0 * (S1 + z0 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f1 = (float)(one + z1 * (mhalf + z1 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z1 * (C1 + z1 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f2 = (float)(y2 + y2 * z2 * (S0 + z2 * (S1 + z2 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f3 = (float)(y3 + y3 * z3 * (S0 + z3 * (S1 + z3 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis break;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis case 3:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f0 = (float)(one + z0 * (mhalf + z0 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z0 * (C1 + z0 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f1 = (float)(one + z1 * (mhalf + z1 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z1 * (C1 + z1 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f2 = (float)(y2 + y2 * z2 * (S0 + z2 * (S1 + z2 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f3 = (float)(y3 + y3 * z3 * (S0 + z3 * (S1 + z3 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis break;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis case 4:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f0 = (float)(y0 + y0 * z0 * (S0 + z0 * (S1 + z0 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f1 = (float)(y1 + y1 * z1 * (S0 + z1 * (S1 + z1 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f2 = (float)(one + z2 * (mhalf + z2 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z2 * (C1 + z2 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f3 = (float)(y3 + y3 * z3 * (S0 + z3 * (S1 + z3 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis break;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis case 5:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f0 = (float)(one + z0 * (mhalf + z0 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z0 * (C1 + z0 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f1 = (float)(y1 + y1 * z1 * (S0 + z1 * (S1 + z1 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f2 = (float)(one + z2 * (mhalf + z2 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z2 * (C1 + z2 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f3 = (float)(y3 + y3 * z3 * (S0 + z3 * (S1 + z3 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis break;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis case 6:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f0 = (float)(y0 + y0 * z0 * (S0 + z0 * (S1 + z0 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f1 = (float)(one + z1 * (mhalf + z1 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z1 * (C1 + z1 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f2 = (float)(one + z2 * (mhalf + z2 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z2 * (C1 + z2 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f3 = (float)(y3 + y3 * z3 * (S0 + z3 * (S1 + z3 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis break;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis case 7:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f0 = (float)(one + z0 * (mhalf + z0 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z0 * (C1 + z0 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f1 = (float)(one + z1 * (mhalf + z1 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z1 * (C1 + z1 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f2 = (float)(one + z2 * (mhalf + z2 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z2 * (C1 + z2 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f3 = (float)(y3 + y3 * z3 * (S0 + z3 * (S1 + z3 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis break;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis case 8:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f0 = (float)(y0 + y0 * z0 * (S0 + z0 * (S1 + z0 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f1 = (float)(y1 + y1 * z1 * (S0 + z1 * (S1 + z1 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f2 = (float)(y2 + y2 * z2 * (S0 + z2 * (S1 + z2 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f3 = (float)(one + z3 * (mhalf + z3 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z3 * (C1 + z3 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis break;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis case 9:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f0 = (float)(one + z0 * (mhalf + z0 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z0 * (C1 + z0 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f1 = (float)(y1 + y1 * z1 * (S0 + z1 * (S1 + z1 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f2 = (float)(y2 + y2 * z2 * (S0 + z2 * (S1 + z2 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f3 = (float)(one + z3 * (mhalf + z3 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z3 * (C1 + z3 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis break;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis case 10:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f0 = (float)(y0 + y0 * z0 * (S0 + z0 * (S1 + z0 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f1 = (float)(one + z1 * (mhalf + z1 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z1 * (C1 + z1 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f2 = (float)(y2 + y2 * z2 * (S0 + z2 * (S1 + z2 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f3 = (float)(one + z3 * (mhalf + z3 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z3 * (C1 + z3 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis break;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis case 11:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f0 = (float)(one + z0 * (mhalf + z0 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z0 * (C1 + z0 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f1 = (float)(one + z1 * (mhalf + z1 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z1 * (C1 + z1 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f2 = (float)(y2 + y2 * z2 * (S0 + z2 * (S1 + z2 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f3 = (float)(one + z3 * (mhalf + z3 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z3 * (C1 + z3 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis break;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis case 12:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f0 = (float)(y0 + y0 * z0 * (S0 + z0 * (S1 + z0 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f1 = (float)(y1 + y1 * z1 * (S0 + z1 * (S1 + z1 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f2 = (float)(one + z2 * (mhalf + z2 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z2 * (C1 + z2 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f3 = (float)(one + z3 * (mhalf + z3 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z3 * (C1 + z3 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis break;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis case 13:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f0 = (float)(one + z0 * (mhalf + z0 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z0 * (C1 + z0 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f1 = (float)(y1 + y1 * z1 * (S0 + z1 * (S1 + z1 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f2 = (float)(one + z2 * (mhalf + z2 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z2 * (C1 + z2 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f3 = (float)(one + z3 * (mhalf + z3 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z3 * (C1 + z3 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis break;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis case 14:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f0 = (float)(y0 + y0 * z0 * (S0 + z0 * (S1 + z0 * S2)));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f1 = (float)(one + z1 * (mhalf + z1 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z1 * (C1 + z1 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f2 = (float)(one + z2 * (mhalf + z2 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z2 * (C1 + z2 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f3 = (float)(one + z3 * (mhalf + z3 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z3 * (C1 + z3 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis break;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis default:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f0 = (float)(one + z0 * (mhalf + z0 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z0 * (C1 + z0 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f1 = (float)(one + z1 * (mhalf + z1 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z1 * (C1 + z1 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f2 = (float)(one + z2 * (mhalf + z2 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z2 * (C1 + z2 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis f3 = (float)(one + z3 * (mhalf + z3 * (C0 +
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis z3 * (C1 + z3 * C2))));
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis }
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *y = (n0 & 2)? -f0 : f0;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis y += stridey;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *y = (n1 & 2)? -f1 : f1;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis y += stridey;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *y = (n2 & 2)? -f2 : f2;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis y += stridey;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis *y = (n3 & 2)? -f3 : f3;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis continue;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisprocess1:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis PROCESS(0);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis continue;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisprocess2:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis PROCESS(0);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis PROCESS(1);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis continue;
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtisprocess3:
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis PROCESS(0);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis PROCESS(1);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis PROCESS(2);
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis }
25c28e83beb90e7c80452a7c818c5e6f73a07dc8Piotr Jasiukajtis}