0000: 2f 2a 20 53 6f 6d 65 20 72 61 6e 64 6f 6d 20 74 /* Some random t
0010: 65 73 74 73 20 66 6f 72 20 76 61 63 61 6c 6c 2e ests for vacall.
0020: 20 2a 2f 0a 0a 2f 2a 0a 20 2a 20 43 6f 70 79 72 */../*. * Copyr
0030: 69 67 68 74 20 31 39 39 33 20 42 69 6c 6c 20 54 ight 1993 Bill T
0040: 72 69 67 67 73 2c 20 3c 42 69 6c 6c 2e 54 72 69 riggs, <Bill.Tri
0050: 67 67 73 40 69 6e 72 69 61 6c 70 65 73 2e 66 72 ggs@inrialpes.fr
0060: 3e 0a 20 2a 20 43 6f 70 79 72 69 67 68 74 20 31 >. * Copyright 1
0070: 39 39 35 2d 31 39 39 39 2c 20 32 30 30 31 2d 32 995-1999, 2001-2
0080: 30 30 32 2c 20 32 30 30 35 20 42 72 75 6e 6f 20 002, 2005 Bruno
0090: 48 61 69 62 6c 65 2c 20 3c 62 72 75 6e 6f 40 63 Haible, <bruno@c
00a0: 6c 69 73 70 2e 6f 72 67 3e 0a 20 2a 0a 20 2a 20 lisp.org>. *. *
00b0: 54 68 69 73 20 69 73 20 66 72 65 65 20 73 6f 66 This is free sof
00c0: 74 77 61 72 65 20 64 69 73 74 72 69 62 75 74 65 tware distribute
00d0: 64 20 75 6e 64 65 72 20 74 68 65 20 47 4e 55 20 d under the GNU
00e0: 47 65 6e 65 72 61 6c 20 50 75 62 6c 69 63 20 4c General Public L
00f0: 69 63 65 6e 63 65 0a 20 2a 20 64 65 73 63 72 69 icence. * descri
0100: 62 65 64 20 69 6e 20 74 68 65 20 66 69 6c 65 20 bed in the file
0110: 43 4f 50 59 49 4e 47 2e 20 43 6f 6e 74 61 63 74 COPYING. Contact
0120: 20 74 68 65 20 61 75 74 68 6f 72 20 69 66 20 79 the author if y
0130: 6f 75 20 64 6f 6e 27 74 20 68 61 76 65 20 74 68 ou don't have th
0140: 69 73 0a 20 2a 20 6f 72 20 63 61 6e 27 74 20 6c is. * or can't l
0150: 69 76 65 20 77 69 74 68 20 69 74 2e 20 54 68 65 ive with it. The
0160: 72 65 20 69 73 20 41 42 53 4f 4c 55 54 45 4c 59 re is ABSOLUTELY
0170: 20 4e 4f 20 57 41 52 52 41 4e 54 59 2c 20 65 78 NO WARRANTY, ex
0180: 70 6c 69 63 69 74 20 6f 72 20 69 6d 70 6c 69 65 plicit or implie
0190: 64 2c 0a 20 2a 20 6f 6e 20 74 68 69 73 20 73 6f d,. * on this so
01a0: 66 74 77 61 72 65 2e 0a 20 2a 2f 0a 0a 23 69 6e ftware.. */..#in
01b0: 63 6c 75 64 65 20 22 63 6f 6e 66 69 67 2e 68 22 clude "config.h"
01c0: 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 64 69 6f .#include <stdio
01d0: 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 20 3c 73 74 .h>.#include <st
01e0: 64 6c 69 62 2e 68 3e 0a 23 69 6e 63 6c 75 64 65 dlib.h>.#include
01f0: 20 3c 73 74 72 69 6e 67 2e 68 3e 0a 23 69 6e 63 <string.h>.#inc
0200: 6c 75 64 65 20 22 63 61 6c 6c 62 61 63 6b 2e 68 lude "callback.h
0210: 22 0a 46 49 4c 45 2a 20 6f 75 74 3b 0a 0a 23 69 ".FILE* out;..#i
0220: 66 20 64 65 66 69 6e 65 64 28 5f 5f 68 70 70 61 f defined(__hppa
0230: 5f 5f 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f __) && defined(_
0240: 5f 47 4e 55 43 5f 5f 29 0a 23 69 66 20 28 5f 5f _GNUC__).#if (__
0250: 47 4e 55 43 5f 5f 20 3d 3d 20 32 20 26 26 20 5f GNUC__ == 2 && _
0260: 5f 47 4e 55 43 5f 4d 49 4e 4f 52 5f 5f 20 3c 20 _GNUC_MINOR__ <
0270: 36 29 0a 2f 2a 20 67 63 63 2d 32 2e 35 2e 32 20 6)./* gcc-2.5.2
0280: 62 75 67 73 20 70 72 65 76 65 6e 74 20 74 68 65 bugs prevent the
0290: 20 54 20 74 65 73 74 20 66 72 6f 6d 20 77 6f 72 T test from wor
02a0: 6b 69 6e 67 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 king. */.#define
02b0: 20 53 4b 49 50 5f 54 0a 23 65 6e 64 69 66 0a 23 SKIP_T.#endif.#
02c0: 65 6e 64 69 66 0a 23 69 66 20 64 65 66 69 6e 65 endif.#if define
02d0: 64 28 5f 5f 6d 36 38 6b 5f 5f 29 20 26 26 20 64 d(__m68k__) && d
02e0: 65 66 69 6e 65 64 28 73 75 6e 29 20 26 26 20 21 efined(sun) && !
02f0: 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 43 5f 5f defined(__GNUC__
0300: 29 0a 2f 2a 20 41 20 53 75 6e 4f 53 20 34 2e 30 )./* A SunOS 4.0
0310: 2e 33 20 63 63 20 62 75 67 20 69 73 20 74 72 69 .3 cc bug is tri
0320: 67 67 65 72 65 64 20 62 79 20 74 68 65 20 76 61 ggered by the va
0330: 5f 61 72 67 5f 73 74 72 75 63 74 20 6d 61 63 72 _arg_struct macr
0340: 6f 2e 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 4b o. */.#define SK
0350: 49 50 5f 53 54 52 55 43 54 53 0a 23 65 6e 64 69 IP_STRUCTS.#endi
0360: 66 0a 23 69 66 20 64 65 66 69 6e 65 64 28 5f 5f f.#if defined(__
0370: 6d 36 38 6b 5f 5f 29 20 26 26 20 64 65 66 69 6e m68k__) && defin
0380: 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 0a 2f 2a 20 ed(__GNUC__)./*
0390: 22 67 63 63 2d 32 2e 36 2e 33 20 2d 66 72 65 67 "gcc-2.6.3 -freg
03a0: 2d 73 74 72 75 63 74 2d 72 65 74 75 72 6e 22 20 -struct-return"
03b0: 72 65 74 75 72 6e 73 20 20 54 20 3d 20 73 74 72 returns T = str
03c0: 75 63 74 20 7b 20 63 68 61 72 20 63 5b 33 5d 3b uct { char c[3];
03d0: 20 7d 20 20 28 77 68 69 63 68 0a 20 2a 20 68 61 } (which. * ha
03e0: 73 20 73 69 7a 65 20 34 20 21 29 20 69 6e 20 6d s size 4 !) in m
03f0: 65 6d 6f 72 79 2c 20 69 6e 20 63 6f 6e 74 72 61 emory, in contra
0400: 73 74 20 74 6f 20 20 73 74 72 75 63 74 20 7b 20 st to struct {
0410: 63 68 61 72 20 61 2c 62 2c 63 3b 20 7d 20 20 61 char a,b,c; } a
0420: 6e 64 0a 20 2a 20 73 74 72 75 63 74 20 7b 20 63 nd. * struct { c
0430: 68 61 72 20 63 5b 34 5d 3b 20 7d 20 20 61 6e 64 har c[4]; } and
0440: 20 20 73 74 72 75 63 74 20 7b 20 63 68 61 72 20 struct { char
0450: 61 2c 62 2c 63 2c 64 3b 20 7d 20 20 77 68 69 63 a,b,c,d; } whic
0460: 68 20 68 61 76 65 20 74 68 65 20 73 61 6d 65 0a h have the same.
0470: 20 2a 20 73 69 7a 65 20 61 6e 64 20 74 68 65 20 * size and the
0480: 73 61 6d 65 20 61 6c 69 67 6e 6d 65 6e 74 20 62 same alignment b
0490: 75 74 20 61 72 65 20 72 65 74 75 72 6e 65 64 20 ut are returned
04a0: 69 6e 20 72 65 67 69 73 74 65 72 73 2e 20 49 20 in registers. I
04b0: 64 6f 6e 27 74 20 6b 6e 6f 77 20 77 68 79 2e 0a don't know why..
04c0: 20 2a 2f 0a 23 64 65 66 69 6e 65 20 53 4b 49 50 */.#define SKIP
04d0: 5f 54 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 65 _T.#endif.#if de
04e0: 66 69 6e 65 64 28 5f 5f 69 33 38 36 5f 5f 29 20 fined(__i386__)
04f0: 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 47 4e 55 && defined(__GNU
0500: 43 5f 5f 29 0a 23 69 66 20 28 5f 5f 47 4e 55 43 C__).#if (__GNUC
0510: 5f 5f 20 3d 3d 20 32 29 20 26 26 20 28 5f 5f 47 __ == 2) && (__G
0520: 4e 55 43 5f 4d 49 4e 4f 52 5f 5f 20 3d 3d 20 37 NUC_MINOR__ == 7
0530: 29 0a 2f 2a 20 50 72 6f 62 6c 65 6d 20 77 69 74 )./* Problem wit
0540: 68 20 67 63 63 2d 32 2e 37 2e 78 20 6f 6e 20 4c h gcc-2.7.x on L
0550: 69 6e 75 78 2f 45 4c 46 3a 20 54 68 65 20 58 20 inux/ELF: The X
0560: 74 65 73 74 20 66 61 69 6c 73 2e 0a 20 2a 20 54 test fails.. * T
0570: 68 65 20 63 61 6c 6c 69 6e 67 20 63 6f 6e 76 65 he calling conve
0580: 6e 74 69 6f 6e 20 66 6f 72 20 43 20 66 75 6e 63 ntion for C func
0590: 74 69 6f 6e 73 20 72 65 74 75 72 6e 69 6e 67 20 tions returning
05a0: 73 74 72 75 63 74 75 72 65 73 20 6f 66 20 73 69 structures of si
05b0: 7a 65 20 3e 20 38 20 62 79 74 65 73 0a 20 2a 20 ze > 8 bytes. *
05c0: 61 70 70 61 72 65 6e 74 6c 79 20 68 61 73 20 63 apparently has c
05d0: 68 61 6e 67 65 64 20 62 65 74 77 65 65 6e 20 67 hanged between g
05e0: 63 63 2d 32 2e 36 2e 33 20 61 6e 64 20 67 63 63 cc-2.6.3 and gcc
05f0: 2d 32 2e 37 20 28 61 6c 6c 20 69 33 38 36 20 70 -2.7 (all i386 p
0600: 6c 61 74 66 6f 72 6d 73 29 2c 0a 20 2a 20 61 6e latforms),. * an
0610: 64 20 76 61 63 61 6c 6c 20 73 75 70 70 6f 72 74 d vacall support
0620: 73 20 6f 6e 6c 79 20 74 68 65 20 6f 6c 64 20 6f s only the old o
0630: 6e 65 2e 20 53 69 6e 63 65 20 67 63 63 2d 32 2e ne. Since gcc-2.
0640: 38 20 77 69 6c 6c 20 73 77 69 74 63 68 20 62 61 8 will switch ba
0650: 63 6b 20 74 6f 0a 20 2a 20 67 63 63 2d 32 2e 36 ck to. * gcc-2.6
0660: 2e 33 27 73 20 63 61 6c 6c 69 6e 67 20 63 6f 6e .3's calling con
0670: 76 65 6e 74 69 6f 6e 2c 20 49 20 77 6f 6e 27 74 vention, I won't
0680: 20 63 68 61 6e 67 65 20 66 66 63 61 6c 6c 2f 76 change ffcall/v
0690: 61 63 61 6c 6c 20 66 6f 72 20 74 68 69 73 2e 0a acall for this..
06a0: 20 2a 20 4a 75 73 74 20 68 69 64 65 20 74 68 65 * Just hide the
06b0: 20 70 72 6f 62 6c 65 6d 20 62 79 20 6e 6f 74 20 problem by not
06c0: 72 75 6e 6e 69 6e 67 20 74 68 65 20 74 65 73 74 running the test
06d0: 2e 20 54 68 65 20 69 6d 70 61 63 74 20 69 73 6e . The impact isn
06e0: 27 74 20 62 69 67 20 66 6f 72 0a 20 2a 20 43 4c 't big for. * CL
06f0: 49 53 50 3a 20 43 61 6c 6c 62 61 63 6b 73 20 72 ISP: Callbacks r
0700: 65 74 75 72 6e 69 6e 67 20 73 74 72 75 63 74 75 eturning structu
0710: 72 65 73 20 3e 20 38 20 62 79 74 65 73 20 77 6f res > 8 bytes wo
0720: 6e 27 74 20 77 6f 72 6b 2e 0a 20 2a 2f 0a 23 64 n't work.. */.#d
0730: 65 66 69 6e 65 20 53 4b 49 50 5f 58 0a 23 65 6e efine SKIP_X.#en
0740: 64 69 66 0a 23 65 6e 64 69 66 0a 23 69 66 20 64 dif.#endif.#if d
0750: 65 66 69 6e 65 64 28 5f 5f 73 70 61 72 63 5f 5f efined(__sparc__
0760: 29 20 26 26 20 64 65 66 69 6e 65 64 28 73 75 6e ) && defined(sun
0770: 29 20 26 26 20 64 65 66 69 6e 65 64 28 5f 5f 53 ) && defined(__S
0780: 55 4e 50 52 4f 5f 43 29 20 2f 2a 20 53 55 4e 57 UNPRO_C) /* SUNW
0790: 73 70 72 6f 20 63 63 20 2a 2f 0a 2f 2a 20 53 75 spro cc */./* Su
07a0: 6e 50 52 4f 20 63 63 20 6d 69 73 63 6f 6d 70 69 nPRO cc miscompi
07b0: 6c 65 73 20 74 68 65 20 73 69 6d 75 6c 61 74 6f les the simulato
07c0: 72 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 58 r function for X
07d0: 5f 42 63 64 42 3a 20 64 2e 69 5b 31 5d 20 69 73 _BcdB: d.i[1] is
07e0: 0a 20 2a 20 74 65 6d 70 6f 72 61 72 69 6c 79 20 . * temporarily
07f0: 73 74 6f 72 65 64 20 69 6e 20 25 6c 32 20 61 6e stored in %l2 an
0800: 64 20 70 75 74 20 6f 6e 74 6f 20 74 68 65 20 73 d put onto the s
0810: 74 61 63 6b 20 66 72 6f 6d 20 25 6c 32 2c 20 62 tack from %l2, b
0820: 75 74 20 69 6e 20 62 65 74 77 65 65 6e 0a 20 2a ut in between. *
0830: 20 74 68 65 20 63 6f 70 79 20 6f 66 20 58 20 68 the copy of X h
0840: 61 73 20 75 73 65 64 20 25 6c 32 20 61 73 20 61 as used %l2 as a
0850: 20 63 6f 75 6e 74 65 72 20 77 69 74 68 6f 75 74 counter without
0860: 20 73 61 76 69 6e 67 20 61 6e 64 20 72 65 73 74 saving and rest
0870: 6f 72 69 6e 67 20 69 74 73 0a 20 2a 20 76 61 6c oring its. * val
0880: 75 65 2e 0a 20 2a 2f 0a 23 64 65 66 69 6e 65 20 ue.. */.#define
0890: 53 4b 49 50 5f 58 0a 23 65 6e 64 69 66 0a 23 69 SKIP_X.#endif.#i
08a0: 66 20 64 65 66 69 6e 65 64 28 5f 5f 6d 69 70 73 f defined(__mips
08b0: 6e 33 32 5f 5f 29 20 26 26 20 21 64 65 66 69 6e n32__) && !defin
08c0: 65 64 28 5f 5f 47 4e 55 43 5f 5f 29 0a 2f 2a 20 ed(__GNUC__)./*
08d0: 54 68 65 20 58 20 74 65 73 74 20 63 72 61 73 68 The X test crash
08e0: 65 73 20 66 6f 72 20 61 6e 20 75 6e 6b 6e 6f 77 es for an unknow
08f0: 6e 20 72 65 61 73 6f 6e 2e 20 2a 2f 0a 23 64 65 n reason. */.#de
0900: 66 69 6e 65 20 53 4b 49 50 5f 58 0a 23 65 6e 64 fine SKIP_X.#end
0910: 69 66 0a 0a 23 64 65 66 69 6e 65 20 75 63 68 61 if..#define ucha
0920: 72 20 75 6e 73 69 67 6e 65 64 20 63 68 61 72 0a r unsigned char.
0930: 23 64 65 66 69 6e 65 20 75 73 68 6f 72 74 20 75 #define ushort u
0940: 6e 73 69 67 6e 65 64 20 73 68 6f 72 74 0a 23 64 nsigned short.#d
0950: 65 66 69 6e 65 20 75 69 6e 74 20 75 6e 73 69 67 efine uint unsig
0960: 6e 65 64 20 69 6e 74 0a 23 64 65 66 69 6e 65 20 ned int.#define
0970: 75 6c 6f 6e 67 20 75 6e 73 69 67 6e 65 64 20 6c ulong unsigned l
0980: 6f 6e 67 0a 0a 74 79 70 65 64 65 66 20 73 74 72 ong..typedef str
0990: 75 63 74 20 7b 20 63 68 61 72 20 78 3b 20 7d 20 uct { char x; }
09a0: 43 68 61 72 3b 0a 74 79 70 65 64 65 66 20 73 74 Char;.typedef st
09b0: 72 75 63 74 20 7b 20 73 68 6f 72 74 20 78 3b 20 ruct { short x;
09c0: 7d 20 53 68 6f 72 74 3b 0a 74 79 70 65 64 65 66 } Short;.typedef
09d0: 20 73 74 72 75 63 74 20 7b 20 69 6e 74 20 78 3b struct { int x;
09e0: 20 7d 20 49 6e 74 3b 0a 74 79 70 65 64 65 66 20 } Int;.typedef
09f0: 73 74 72 75 63 74 20 7b 20 6c 6f 6e 67 20 78 3b struct { long x;
0a00: 20 7d 20 4c 6f 6e 67 3b 0a 74 79 70 65 64 65 66 } Long;.typedef
0a10: 20 73 74 72 75 63 74 20 7b 20 66 6c 6f 61 74 20 struct { float
0a20: 78 3b 20 7d 20 46 6c 6f 61 74 3b 0a 74 79 70 65 x; } Float;.type
0a30: 64 65 66 20 73 74 72 75 63 74 20 7b 20 64 6f 75 def struct { dou
0a40: 62 6c 65 20 78 3b 20 7d 20 44 6f 75 62 6c 65 3b ble x; } Double;
0a50: 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 20 .typedef struct
0a60: 7b 20 63 68 61 72 20 63 3b 20 66 6c 6f 61 74 20 { char c; float
0a70: 66 3b 20 7d 20 41 3b 0a 74 79 70 65 64 65 66 20 f; } A;.typedef
0a80: 73 74 72 75 63 74 20 7b 20 64 6f 75 62 6c 65 20 struct { double
0a90: 64 3b 20 69 6e 74 20 69 5b 33 5d 3b 20 7d 20 42 d; int i[3]; } B
0aa0: 3b 0a 74 79 70 65 64 65 66 20 73 74 72 75 63 74 ;.typedef struct
0ab0: 20 7b 20 6c 6f 6e 67 20 6c 31 3b 20 6c 6f 6e 67 { long l1; long
0ac0: 20 6c 32 3b 20 7d 20 4a 3b 0a 74 79 70 65 64 65 l2; } J;.typede
0ad0: 66 20 73 74 72 75 63 74 20 7b 20 63 68 61 72 20 f struct { char
0ae0: 63 5b 33 5d 3b 20 7d 20 54 3b 0a 74 79 70 65 64 c[3]; } T;.typed
0af0: 65 66 20 73 74 72 75 63 74 20 7b 20 63 68 61 72 ef struct { char
0b00: 20 63 5b 33 33 5d 2c 63 31 3b 20 7d 20 58 3b 0a c[33],c1; } X;.
0b10: 0a 63 68 61 72 20 63 31 3d 27 61 27 2c 20 63 32 .char c1='a', c2
0b20: 3d 31 32 37 2c 20 63 33 3d 28 63 68 61 72 29 31 =127, c3=(char)1
0b30: 32 38 2c 20 63 34 3d 28 63 68 61 72 29 32 35 35 28, c4=(char)255
0b40: 2c 20 63 35 3d 2d 31 3b 0a 73 68 6f 72 74 20 73 , c5=-1;.short s
0b50: 31 3d 33 32 37 36 37 2c 20 73 32 3d 28 73 68 6f 1=32767, s2=(sho
0b60: 72 74 29 33 32 37 36 38 2c 20 73 33 3d 33 2c 20 rt)32768, s3=3,
0b70: 73 34 3d 34 2c 20 73 35 3d 35 2c 20 73 36 3d 36 s4=4, s5=5, s6=6
0b80: 2c 20 73 37 3d 37 2c 20 73 38 3d 38 2c 20 73 39 , s7=7, s8=8, s9
0b90: 3d 39 3b 0a 69 6e 74 20 69 31 3d 31 2c 20 69 32 =9;.int i1=1, i2
0ba0: 3d 32 2c 20 69 33 3d 33 2c 20 69 34 3d 34 2c 20 =2, i3=3, i4=4,
0bb0: 69 35 3d 35 2c 20 69 36 3d 36 2c 20 69 37 3d 37 i5=5, i6=6, i7=7
0bc0: 2c 20 69 38 3d 38 2c 20 69 39 3d 39 2c 0a 20 20 , i8=8, i9=9,.
0bd0: 20 20 69 31 30 3d 31 31 2c 20 69 31 31 3d 31 32 i10=11, i11=12
0be0: 2c 20 69 31 32 3d 31 33 2c 20 69 31 33 3d 31 34 , i12=13, i13=14
0bf0: 2c 20 69 31 34 3d 31 35 2c 20 69 31 35 3d 31 36 , i14=15, i15=16
0c00: 2c 20 69 31 36 3d 31 37 3b 0a 6c 6f 6e 67 20 6c , i16=17;.long l
0c10: 31 3d 31 2c 20 6c 32 3d 32 2c 20 6c 33 3d 33 2c 1=1, l2=2, l3=3,
0c20: 20 6c 34 3d 34 2c 20 6c 35 3d 35 2c 20 6c 36 3d l4=4, l5=5, l6=
0c30: 36 2c 20 6c 37 3d 37 2c 20 6c 38 3d 38 2c 20 6c 6, l7=7, l8=8, l
0c40: 39 3d 39 3b 0a 23 69 66 64 65 66 20 48 41 56 45 9=9;.#ifdef HAVE
0c50: 5f 4c 4f 4e 47 5f 4c 4f 4e 47 0a 6c 6f 6e 67 20 _LONG_LONG.long
0c60: 6c 6f 6e 67 20 6c 6c 31 20 3d 20 33 38 37 35 30 long ll1 = 38750
0c70: 35 36 31 34 33 31 33 30 36 38 39 35 33 30 4c 4c 56143130689530LL
0c80: 3b 0a 23 65 6e 64 69 66 0a 66 6c 6f 61 74 20 66 ;.#endif.float f
0c90: 31 3d 30 2e 31 2c 20 66 32 3d 30 2e 32 2c 20 66 1=0.1, f2=0.2, f
0ca0: 33 3d 30 2e 33 2c 20 66 34 3d 30 2e 34 2c 20 66 3=0.3, f4=0.4, f
0cb0: 35 3d 30 2e 35 2c 20 66 36 3d 30 2e 36 2c 20 66 5=0.5, f6=0.6, f
0cc0: 37 3d 30 2e 37 2c 20 66 38 3d 30 2e 38 2c 20 66 7=0.7, f8=0.8, f
0cd0: 39 3d 30 2e 39 2c 0a 20 20 20 20 20 20 66 31 30 9=0.9,. f10
0ce0: 3d 31 2e 31 2c 20 66 31 31 3d 31 2e 32 2c 20 66 =1.1, f11=1.2, f
0cf0: 31 32 3d 31 2e 33 2c 20 66 31 33 3d 31 2e 34 2c 12=1.3, f13=1.4,
0d00: 20 66 31 34 3d 31 2e 35 2c 20 66 31 35 3d 31 2e f14=1.5, f15=1.
0d10: 36 2c 20 66 31 36 3d 31 2e 37 3b 0a 64 6f 75 62 6, f16=1.7;.doub
0d20: 6c 65 20 64 31 3d 30 2e 31 2c 20 64 32 3d 30 2e le d1=0.1, d2=0.
0d30: 32 2c 20 64 33 3d 30 2e 33 2c 20 64 34 3d 30 2e 2, d3=0.3, d4=0.
0d40: 34 2c 20 64 35 3d 30 2e 35 2c 20 64 36 3d 30 2e 4, d5=0.5, d6=0.
0d50: 36 2c 20 64 37 3d 30 2e 37 2c 20 64 38 3d 30 2e 6, d7=0.7, d8=0.
0d60: 38 2c 20 64 39 3d 30 2e 39 2c 0a 20 20 20 20 20 8, d9=0.9,.
0d70: 20 20 64 31 30 3d 31 2e 31 2c 20 64 31 31 3d 31 d10=1.1, d11=1
0d80: 2e 32 2c 20 64 31 32 3d 31 2e 33 2c 20 64 31 33 .2, d12=1.3, d13
0d90: 3d 31 2e 34 2c 20 64 31 34 3d 31 2e 35 2c 20 64 =1.4, d14=1.5, d
0da0: 31 35 3d 31 2e 36 2c 20 64 31 36 3d 31 2e 37 3b 15=1.6, d16=1.7;
0db0: 0a 0a 75 63 68 61 72 20 75 63 31 3d 27 61 27 2c ..uchar uc1='a',
0dc0: 20 75 63 32 3d 31 32 37 2c 20 75 63 33 3d 31 32 uc2=127, uc3=12
0dd0: 38 2c 20 75 63 34 3d 32 35 35 2c 20 75 63 35 3d 8, uc4=255, uc5=
0de0: 28 75 63 68 61 72 29 2d 31 3b 0a 75 73 68 6f 72 (uchar)-1;.ushor
0df0: 74 20 75 73 31 3d 31 2c 20 75 73 32 3d 32 2c 20 t us1=1, us2=2,
0e00: 75 73 33 3d 33 2c 20 75 73 34 3d 34 2c 20 75 73 us3=3, us4=4, us
0e10: 35 3d 35 2c 20 75 73 36 3d 36 2c 20 75 73 37 3d 5=5, us6=6, us7=
0e20: 37 2c 20 75 73 38 3d 38 2c 20 75 73 39 3d 39 3b 7, us8=8, us9=9;
0e30: 0a 75 69 6e 74 20 75 69 31 3d 31 2c 20 75 69 32 .uint ui1=1, ui2
0e40: 3d 32 2c 20 75 69 33 3d 33 2c 20 75 69 34 3d 34 =2, ui3=3, ui4=4
0e50: 2c 20 75 69 35 3d 35 2c 20 75 69 36 3d 36 2c 20 , ui5=5, ui6=6,
0e60: 75 69 37 3d 37 2c 20 75 69 38 3d 38 2c 20 75 69 ui7=7, ui8=8, ui
0e70: 39 3d 39 3b 0a 75 6c 6f 6e 67 20 75 6c 31 3d 31 9=9;.ulong ul1=1
0e80: 2c 20 75 6c 32 3d 32 2c 20 75 6c 33 3d 33 2c 20 , ul2=2, ul3=3,
0e90: 75 6c 34 3d 34 2c 20 75 6c 35 3d 35 2c 20 75 6c ul4=4, ul5=5, ul
0ea0: 36 3d 36 2c 20 75 6c 37 3d 37 2c 20 75 6c 38 3d 6=6, ul7=7, ul8=
0eb0: 38 2c 20 75 6c 39 3d 39 3b 0a 0a 63 68 61 72 20 8, ul9=9;..char
0ec0: 2a 73 74 72 31 3d 22 68 65 6c 6c 6f 22 2c 73 74 *str1="hello",st
0ed0: 72 32 5b 5d 3d 22 67 6f 6f 64 62 79 65 22 2c 2a r2[]="goodbye",*
0ee0: 73 74 72 33 3d 22 73 74 69 6c 6c 20 68 65 72 65 str3="still here
0ef0: 3f 22 3b 0a 43 68 61 72 20 43 31 3d 7b 27 41 27 ?";.Char C1={'A'
0f00: 7d 2c 20 43 32 3d 7b 27 42 27 7d 2c 20 43 33 3d }, C2={'B'}, C3=
0f10: 7b 27 43 27 7d 2c 20 43 34 3d 7b 27 5c 33 37 37 {'C'}, C4={'\377
0f20: 27 7d 2c 20 43 35 3d 7b 2d 31 7d 3b 0a 53 68 6f '}, C5={-1};.Sho
0f30: 72 74 20 53 31 3d 7b 31 7d 2c 20 53 32 3d 7b 32 rt S1={1}, S2={2
0f40: 7d 2c 20 53 33 3d 7b 33 7d 2c 20 53 34 3d 7b 34 }, S3={3}, S4={4
0f50: 7d 2c 20 53 35 3d 7b 35 7d 2c 20 53 36 3d 7b 36 }, S5={5}, S6={6
0f60: 7d 2c 20 53 37 3d 7b 37 7d 2c 20 53 38 3d 7b 38 }, S7={7}, S8={8
0f70: 7d 2c 20 53 39 3d 7b 39 7d 3b 0a 49 6e 74 20 49 }, S9={9};.Int I
0f80: 31 3d 7b 31 7d 2c 20 49 32 3d 7b 32 7d 2c 20 49 1={1}, I2={2}, I
0f90: 33 3d 7b 33 7d 2c 20 49 34 3d 7b 34 7d 2c 20 49 3={3}, I4={4}, I
0fa0: 35 3d 7b 35 7d 2c 20 49 36 3d 7b 36 7d 2c 20 49 5={5}, I6={6}, I
0fb0: 37 3d 7b 37 7d 2c 20 49 38 3d 7b 38 7d 2c 20 49 7={7}, I8={8}, I
0fc0: 39 3d 7b 39 7d 3b 0a 46 6c 6f 61 74 20 46 31 3d 9={9};.Float F1=
0fd0: 7b 30 2e 31 7d 2c 20 46 32 3d 7b 30 2e 32 7d 2c {0.1}, F2={0.2},
0fe0: 20 46 33 3d 7b 30 2e 33 7d 2c 20 46 34 3d 7b 30 F3={0.3}, F4={0
0ff0: 2e 34 7d 2c 20 46 35 3d 7b 30 2e 35 7d 2c 20 46 .4}, F5={0.5}, F
1000: 36 3d 7b 30 2e 36 7d 2c 20 46 37 3d 7b 30 2e 37 6={0.6}, F7={0.7
1010: 7d 2c 20 46 38 3d 7b 30 2e 38 7d 2c 20 46 39 3d }, F8={0.8}, F9=
1020: 7b 30 2e 39 7d 3b 0a 44 6f 75 62 6c 65 20 44 31 {0.9};.Double D1
1030: 3d 7b 30 2e 31 7d 2c 20 44 32 3d 7b 30 2e 32 7d ={0.1}, D2={0.2}
1040: 2c 20 44 33 3d 7b 30 2e 33 7d 2c 20 44 34 3d 7b , D3={0.3}, D4={
1050: 30 2e 34 7d 2c 20 44 35 3d 7b 30 2e 35 7d 2c 20 0.4}, D5={0.5},
1060: 44 36 3d 7b 30 2e 36 7d 2c 20 44 37 3d 7b 30 2e D6={0.6}, D7={0.
1070: 37 7d 2c 20 44 38 3d 7b 30 2e 38 7d 2c 20 44 39 7}, D8={0.8}, D9
1080: 3d 7b 30 2e 39 7d 3b 0a 0a 41 20 41 31 3d 7b 27 ={0.9};..A A1={'
1090: 61 27 2c 30 2e 31 7d 2c 41 32 3d 7b 27 62 27 2c a',0.1},A2={'b',
10a0: 30 2e 32 7d 2c 41 33 3d 7b 27 5c 33 37 37 27 2c 0.2},A3={'\377',
10b0: 30 2e 33 7d 3b 0a 42 20 42 31 3d 7b 30 2e 31 2c 0.3};.B B1={0.1,
10c0: 7b 31 2c 32 2c 33 7d 7d 2c 42 32 3d 7b 30 2e 32 {1,2,3}},B2={0.2
10d0: 2c 7b 35 2c 34 2c 33 7d 7d 3b 0a 4a 20 4a 31 3d ,{5,4,3}};.J J1=
10e0: 7b 34 37 2c 31 31 7d 2c 4a 32 3d 7b 37 33 2c 35 {47,11},J2={73,5
10f0: 35 7d 3b 0a 54 20 54 31 3d 7b 27 74 27 2c 27 68 5};.T T1={'t','h
1100: 27 2c 27 65 27 7d 2c 54 32 3d 7b 27 66 27 2c 27 ','e'},T2={'f','
1110: 6f 27 2c 27 78 27 7d 3b 0a 58 20 58 31 3d 7b 22 o','x'};.X X1={"
1120: 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f 70 abcdefghijklmnop
1130: 71 72 73 74 75 76 77 78 79 7a 41 42 43 44 45 46 qrstuvwxyzABCDEF
1140: 22 2c 27 47 27 7d 2c 20 58 32 3d 7b 22 31 32 33 ",'G'}, X2={"123
1150: 22 2c 27 39 27 7d 2c 20 58 33 3d 7b 22 72 65 74 ",'9'}, X3={"ret
1160: 75 72 6e 2d 72 65 74 75 72 6e 2d 72 65 74 75 72 urn-return-retur
1170: 6e 22 2c 27 52 27 7d 3b 0a 0a 2f 2a 20 76 6f 69 n",'R'};../* voi
1180: 64 20 74 65 73 74 73 20 2a 2f 0a 76 6f 69 64 20 d tests */.void
1190: 76 5f 76 20 28 76 6f 69 64 29 0a 7b 0a 20 20 66 v_v (void).{. f
11a0: 70 72 69 6e 74 66 28 6f 75 74 2c 22 76 6f 69 64 printf(out,"void
11b0: 20 66 28 76 6f 69 64 29 3a 5c 6e 22 29 3b 0a 20 f(void):\n");.
11c0: 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 7d 0a fflush(out);.}.
11d0: 0a 2f 2a 20 69 6e 74 20 74 65 73 74 73 20 2a 2f ./* int tests */
11e0: 0a 69 6e 74 20 69 5f 76 20 28 76 6f 69 64 29 0a .int i_v (void).
11f0: 7b 0a 20 20 69 6e 74 20 72 3d 39 39 3b 0a 20 20 {. int r=99;.
1200: 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 69 6e 74 fprintf(out,"int
1210: 20 66 28 76 6f 69 64 29 3a 22 29 3b 0a 20 20 66 f(void):");. f
1220: 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 72 65 flush(out);. re
1230: 74 75 72 6e 20 72 3b 0a 7d 0a 69 6e 74 20 69 5f turn r;.}.int i_
1240: 69 20 28 69 6e 74 20 61 29 0a 7b 0a 20 20 69 6e i (int a).{. in
1250: 74 20 72 3d 61 2b 31 3b 0a 20 20 66 70 72 69 6e t r=a+1;. fprin
1260: 74 66 28 6f 75 74 2c 22 69 6e 74 20 66 28 69 6e tf(out,"int f(in
1270: 74 29 3a 28 25 64 29 22 2c 61 29 3b 0a 20 20 66 t):(%d)",a);. f
1280: 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 72 65 flush(out);. re
1290: 74 75 72 6e 20 72 3b 0a 7d 0a 69 6e 74 20 69 5f turn r;.}.int i_
12a0: 69 32 20 28 69 6e 74 20 61 2c 20 69 6e 74 20 62 i2 (int a, int b
12b0: 29 0a 7b 0a 20 20 69 6e 74 20 72 3d 61 2b 62 3b ).{. int r=a+b;
12c0: 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 . fprintf(out,"
12d0: 69 6e 74 20 66 28 32 2a 69 6e 74 29 3a 28 25 64 int f(2*int):(%d
12e0: 2c 25 64 29 22 2c 61 2c 62 29 3b 0a 20 20 66 66 ,%d)",a,b);. ff
12f0: 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 72 65 74 lush(out);. ret
1300: 75 72 6e 20 72 3b 0a 7d 0a 69 6e 74 20 69 5f 69 urn r;.}.int i_i
1310: 34 20 28 69 6e 74 20 61 2c 20 69 6e 74 20 62 2c 4 (int a, int b,
1320: 20 69 6e 74 20 63 2c 20 69 6e 74 20 64 29 0a 7b int c, int d).{
1330: 0a 20 20 69 6e 74 20 72 3d 61 2b 62 2b 63 2b 64 . int r=a+b+c+d
1340: 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c ;. fprintf(out,
1350: 22 69 6e 74 20 66 28 34 2a 69 6e 74 29 3a 28 25 "int f(4*int):(%
1360: 64 2c 25 64 2c 25 64 2c 25 64 29 22 2c 61 2c 62 d,%d,%d,%d)",a,b
1370: 2c 63 2c 64 29 3b 0a 20 20 66 66 6c 75 73 68 28 ,c,d);. fflush(
1380: 6f 75 74 29 3b 0a 20 20 72 65 74 75 72 6e 20 72 out);. return r
1390: 3b 0a 7d 0a 69 6e 74 20 69 5f 69 38 20 28 69 6e ;.}.int i_i8 (in
13a0: 74 20 61 2c 20 69 6e 74 20 62 2c 20 69 6e 74 20 t a, int b, int
13b0: 63 2c 20 69 6e 74 20 64 2c 20 69 6e 74 20 65 2c c, int d, int e,
13c0: 20 69 6e 74 20 66 2c 20 69 6e 74 20 67 2c 20 69 int f, int g, i
13d0: 6e 74 20 68 29 0a 7b 0a 20 20 69 6e 74 20 72 3d nt h).{. int r=
13e0: 61 2b 62 2b 63 2b 64 2b 65 2b 66 2b 67 2b 68 3b a+b+c+d+e+f+g+h;
13f0: 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 . fprintf(out,"
1400: 69 6e 74 20 66 28 38 2a 69 6e 74 29 3a 28 25 64 int f(8*int):(%d
1410: 2c 25 64 2c 25 64 2c 25 64 2c 25 64 2c 25 64 2c ,%d,%d,%d,%d,%d,
1420: 25 64 2c 25 64 29 22 2c 61 2c 62 2c 63 2c 64 2c %d,%d)",a,b,c,d,
1430: 65 2c 66 2c 67 2c 68 29 3b 0a 20 20 66 66 6c 75 e,f,g,h);. fflu
1440: 73 68 28 6f 75 74 29 3b 0a 20 20 72 65 74 75 72 sh(out);. retur
1450: 6e 20 72 3b 0a 7d 0a 69 6e 74 20 69 5f 69 31 36 n r;.}.int i_i16
1460: 20 28 69 6e 74 20 61 2c 20 69 6e 74 20 62 2c 20 (int a, int b,
1470: 69 6e 74 20 63 2c 20 69 6e 74 20 64 2c 20 69 6e int c, int d, in
1480: 74 20 65 2c 20 69 6e 74 20 66 2c 20 69 6e 74 20 t e, int f, int
1490: 67 2c 20 69 6e 74 20 68 2c 0a 20 20 20 20 20 20 g, int h,.
14a0: 20 20 20 20 20 69 6e 74 20 69 2c 20 69 6e 74 20 int i, int
14b0: 6a 2c 20 69 6e 74 20 6b 2c 20 69 6e 74 20 6c 2c j, int k, int l,
14c0: 20 69 6e 74 20 6d 2c 20 69 6e 74 20 6e 2c 20 69 int m, int n, i
14d0: 6e 74 20 6f 2c 20 69 6e 74 20 70 29 0a 7b 0a 20 nt o, int p).{.
14e0: 20 69 6e 74 20 72 3d 61 2b 62 2b 63 2b 64 2b 65 int r=a+b+c+d+e
14f0: 2b 66 2b 67 2b 68 2b 69 2b 6a 2b 6b 2b 6c 2b 6d +f+g+h+i+j+k+l+m
1500: 2b 6e 2b 6f 2b 70 3b 0a 20 20 66 70 72 69 6e 74 +n+o+p;. fprint
1510: 66 28 6f 75 74 2c 22 69 6e 74 20 66 28 31 36 2a f(out,"int f(16*
1520: 69 6e 74 29 3a 28 25 64 2c 25 64 2c 25 64 2c 25 int):(%d,%d,%d,%
1530: 64 2c 25 64 2c 25 64 2c 25 64 2c 25 64 2c 25 64 d,%d,%d,%d,%d,%d
1540: 2c 25 64 2c 25 64 2c 25 64 2c 25 64 2c 25 64 2c ,%d,%d,%d,%d,%d,
1550: 25 64 2c 25 64 29 22 2c 0a 20 20 20 20 20 20 20 %d,%d)",.
1560: 20 20 20 61 2c 62 2c 63 2c 64 2c 65 2c 66 2c 67 a,b,c,d,e,f,g
1570: 2c 68 2c 69 2c 6a 2c 6b 2c 6c 2c 6d 2c 6e 2c 6f ,h,i,j,k,l,m,n,o
1580: 2c 70 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 ,p);. fflush(ou
1590: 74 29 3b 0a 20 20 72 65 74 75 72 6e 20 72 3b 0a t);. return r;.
15a0: 7d 0a 0a 2f 2a 20 66 6c 6f 61 74 20 74 65 73 74 }../* float test
15b0: 73 20 2a 2f 0a 66 6c 6f 61 74 20 66 5f 66 20 28 s */.float f_f (
15c0: 66 6c 6f 61 74 20 61 29 0a 7b 0a 20 20 66 6c 6f float a).{. flo
15d0: 61 74 20 72 3d 61 2b 31 2e 30 3b 0a 20 20 66 70 at r=a+1.0;. fp
15e0: 72 69 6e 74 66 28 6f 75 74 2c 22 66 6c 6f 61 74 rintf(out,"float
15f0: 20 66 28 66 6c 6f 61 74 29 3a 28 25 67 29 22 2c f(float):(%g)",
1600: 61 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 74 a);. fflush(out
1610: 29 3b 0a 20 20 72 65 74 75 72 6e 20 72 3b 0a 7d );. return r;.}
1620: 0a 66 6c 6f 61 74 20 66 5f 66 32 20 28 66 6c 6f .float f_f2 (flo
1630: 61 74 20 61 2c 20 66 6c 6f 61 74 20 62 29 0a 7b at a, float b).{
1640: 0a 20 20 66 6c 6f 61 74 20 72 3d 61 2b 62 3b 0a . float r=a+b;.
1650: 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 66 fprintf(out,"f
1660: 6c 6f 61 74 20 66 28 32 2a 66 6c 6f 61 74 29 3a loat f(2*float):
1670: 28 25 67 2c 25 67 29 22 2c 61 2c 62 29 3b 0a 20 (%g,%g)",a,b);.
1680: 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 fflush(out);.
1690: 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 66 6c 6f 61 return r;.}.floa
16a0: 74 20 66 5f 66 34 20 28 66 6c 6f 61 74 20 61 2c t f_f4 (float a,
16b0: 20 66 6c 6f 61 74 20 62 2c 20 66 6c 6f 61 74 20 float b, float
16c0: 63 2c 20 66 6c 6f 61 74 20 64 29 0a 7b 0a 20 20 c, float d).{.
16d0: 66 6c 6f 61 74 20 72 3d 61 2b 62 2b 63 2b 64 3b float r=a+b+c+d;
16e0: 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 . fprintf(out,"
16f0: 66 6c 6f 61 74 20 66 28 34 2a 66 6c 6f 61 74 29 float f(4*float)
1700: 3a 28 25 67 2c 25 67 2c 25 67 2c 25 67 29 22 2c :(%g,%g,%g,%g)",
1710: 61 2c 62 2c 63 2c 64 29 3b 0a 20 20 66 66 6c 75 a,b,c,d);. fflu
1720: 73 68 28 6f 75 74 29 3b 0a 20 20 72 65 74 75 72 sh(out);. retur
1730: 6e 20 72 3b 0a 7d 0a 66 6c 6f 61 74 20 66 5f 66 n r;.}.float f_f
1740: 38 20 28 66 6c 6f 61 74 20 61 2c 20 66 6c 6f 61 8 (float a, floa
1750: 74 20 62 2c 20 66 6c 6f 61 74 20 63 2c 20 66 6c t b, float c, fl
1760: 6f 61 74 20 64 2c 20 66 6c 6f 61 74 20 65 2c 20 oat d, float e,
1770: 66 6c 6f 61 74 20 66 2c 0a 20 20 20 20 20 20 20 float f,.
1780: 20 20 20 20 20 66 6c 6f 61 74 20 67 2c 20 66 6c float g, fl
1790: 6f 61 74 20 68 29 0a 7b 0a 20 20 66 6c 6f 61 74 oat h).{. float
17a0: 20 72 3d 61 2b 62 2b 63 2b 64 2b 65 2b 66 2b 67 r=a+b+c+d+e+f+g
17b0: 2b 68 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 +h;. fprintf(ou
17c0: 74 2c 22 66 6c 6f 61 74 20 66 28 38 2a 66 6c 6f t,"float f(8*flo
17d0: 61 74 29 3a 28 25 67 2c 25 67 2c 25 67 2c 25 67 at):(%g,%g,%g,%g
17e0: 2c 25 67 2c 25 67 2c 25 67 2c 25 67 29 22 2c 61 ,%g,%g,%g,%g)",a
17f0: 2c 62 2c 63 2c 64 2c 65 2c 66 2c 67 2c 68 29 3b ,b,c,d,e,f,g,h);
1800: 0a 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a . fflush(out);.
1810: 20 20 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 66 6c return r;.}.fl
1820: 6f 61 74 20 66 5f 66 31 36 20 28 66 6c 6f 61 74 oat f_f16 (float
1830: 20 61 2c 20 66 6c 6f 61 74 20 62 2c 20 66 6c 6f a, float b, flo
1840: 61 74 20 63 2c 20 66 6c 6f 61 74 20 64 2c 20 66 at c, float d, f
1850: 6c 6f 61 74 20 65 2c 20 66 6c 6f 61 74 20 66 2c loat e, float f,
1860: 20 66 6c 6f 61 74 20 67 2c 20 66 6c 6f 61 74 20 float g, float
1870: 68 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 h,.
1880: 66 6c 6f 61 74 20 69 2c 20 66 6c 6f 61 74 20 6a float i, float j
1890: 2c 20 66 6c 6f 61 74 20 6b 2c 20 66 6c 6f 61 74 , float k, float
18a0: 20 6c 2c 20 66 6c 6f 61 74 20 6d 2c 20 66 6c 6f l, float m, flo
18b0: 61 74 20 6e 2c 20 66 6c 6f 61 74 20 6f 2c 20 66 at n, float o, f
18c0: 6c 6f 61 74 20 70 29 0a 7b 0a 20 20 66 6c 6f 61 loat p).{. floa
18d0: 74 20 72 3d 61 2b 62 2b 63 2b 64 2b 65 2b 66 2b t r=a+b+c+d+e+f+
18e0: 67 2b 68 2b 69 2b 6a 2b 6b 2b 6c 2b 6d 2b 6e 2b g+h+i+j+k+l+m+n+
18f0: 6f 2b 70 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f o+p;. fprintf(o
1900: 75 74 2c 22 66 6c 6f 61 74 20 66 28 31 36 2a 66 ut,"float f(16*f
1910: 6c 6f 61 74 29 3a 28 25 67 2c 25 67 2c 25 67 2c loat):(%g,%g,%g,
1920: 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 %g,%g,%g,%g,%g,%
1930: 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 g,%g,%g,%g,%g,%g
1940: 2c 25 67 2c 25 67 29 22 2c 61 2c 62 2c 63 2c 64 ,%g,%g)",a,b,c,d
1950: 2c 65 2c 66 2c 67 2c 68 2c 69 2c 6a 2c 6b 2c 6c ,e,f,g,h,i,j,k,l
1960: 2c 6d 2c 6e 2c 6f 2c 70 29 3b 0a 20 20 66 66 6c ,m,n,o,p);. ffl
1970: 75 73 68 28 6f 75 74 29 3b 0a 20 20 72 65 74 75 ush(out);. retu
1980: 72 6e 20 72 3b 0a 7d 0a 0a 2f 2a 20 64 6f 75 62 rn r;.}../* doub
1990: 6c 65 20 74 65 73 74 73 20 2a 2f 0a 64 6f 75 62 le tests */.doub
19a0: 6c 65 20 64 5f 64 20 28 64 6f 75 62 6c 65 20 61 le d_d (double a
19b0: 29 0a 7b 0a 20 20 64 6f 75 62 6c 65 20 72 3d 61 ).{. double r=a
19c0: 2b 31 2e 30 3b 0a 20 20 66 70 72 69 6e 74 66 28 +1.0;. fprintf(
19d0: 6f 75 74 2c 22 64 6f 75 62 6c 65 20 66 28 64 6f out,"double f(do
19e0: 75 62 6c 65 29 3a 28 25 67 29 22 2c 61 29 3b 0a uble):(%g)",a);.
19f0: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 fflush(out);.
1a00: 20 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 64 6f 75 return r;.}.dou
1a10: 62 6c 65 20 64 5f 64 32 20 28 64 6f 75 62 6c 65 ble d_d2 (double
1a20: 20 61 2c 20 64 6f 75 62 6c 65 20 62 29 0a 7b 0a a, double b).{.
1a30: 20 20 64 6f 75 62 6c 65 20 72 3d 61 2b 62 3b 0a double r=a+b;.
1a40: 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 64 fprintf(out,"d
1a50: 6f 75 62 6c 65 20 66 28 32 2a 64 6f 75 62 6c 65 ouble f(2*double
1a60: 29 3a 28 25 67 2c 25 67 29 22 2c 61 2c 62 29 3b ):(%g,%g)",a,b);
1a70: 0a 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a . fflush(out);.
1a80: 20 20 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 64 6f return r;.}.do
1a90: 75 62 6c 65 20 64 5f 64 34 20 28 64 6f 75 62 6c uble d_d4 (doubl
1aa0: 65 20 61 2c 20 64 6f 75 62 6c 65 20 62 2c 20 64 e a, double b, d
1ab0: 6f 75 62 6c 65 20 63 2c 20 64 6f 75 62 6c 65 20 ouble c, double
1ac0: 64 29 0a 7b 0a 20 20 64 6f 75 62 6c 65 20 72 3d d).{. double r=
1ad0: 61 2b 62 2b 63 2b 64 3b 0a 20 20 66 70 72 69 6e a+b+c+d;. fprin
1ae0: 74 66 28 6f 75 74 2c 22 64 6f 75 62 6c 65 20 66 tf(out,"double f
1af0: 28 34 2a 64 6f 75 62 6c 65 29 3a 28 25 67 2c 25 (4*double):(%g,%
1b00: 67 2c 25 67 2c 25 67 29 22 2c 61 2c 62 2c 63 2c g,%g,%g)",a,b,c,
1b10: 64 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 74 d);. fflush(out
1b20: 29 3b 0a 20 20 72 65 74 75 72 6e 20 72 3b 0a 7d );. return r;.}
1b30: 0a 64 6f 75 62 6c 65 20 64 5f 64 38 20 28 64 6f .double d_d8 (do
1b40: 75 62 6c 65 20 61 2c 20 64 6f 75 62 6c 65 20 62 uble a, double b
1b50: 2c 20 64 6f 75 62 6c 65 20 63 2c 20 64 6f 75 62 , double c, doub
1b60: 6c 65 20 64 2c 20 64 6f 75 62 6c 65 20 65 2c 20 le d, double e,
1b70: 64 6f 75 62 6c 65 20 66 2c 0a 20 20 20 20 20 20 double f,.
1b80: 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 67 2c double g,
1b90: 20 64 6f 75 62 6c 65 20 68 29 0a 7b 0a 20 20 64 double h).{. d
1ba0: 6f 75 62 6c 65 20 72 3d 61 2b 62 2b 63 2b 64 2b ouble r=a+b+c+d+
1bb0: 65 2b 66 2b 67 2b 68 3b 0a 20 20 66 70 72 69 6e e+f+g+h;. fprin
1bc0: 74 66 28 6f 75 74 2c 22 64 6f 75 62 6c 65 20 66 tf(out,"double f
1bd0: 28 38 2a 64 6f 75 62 6c 65 29 3a 28 25 67 2c 25 (8*double):(%g,%
1be0: 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 g,%g,%g,%g,%g,%g
1bf0: 2c 25 67 29 22 2c 61 2c 62 2c 63 2c 64 2c 65 2c ,%g)",a,b,c,d,e,
1c00: 66 2c 67 2c 68 29 3b 0a 20 20 66 66 6c 75 73 68 f,g,h);. fflush
1c10: 28 6f 75 74 29 3b 0a 20 20 72 65 74 75 72 6e 20 (out);. return
1c20: 72 3b 0a 7d 0a 64 6f 75 62 6c 65 20 64 5f 64 31 r;.}.double d_d1
1c30: 36 20 28 64 6f 75 62 6c 65 20 61 2c 20 64 6f 75 6 (double a, dou
1c40: 62 6c 65 20 62 2c 20 64 6f 75 62 6c 65 20 63 2c ble b, double c,
1c50: 20 64 6f 75 62 6c 65 20 64 2c 20 64 6f 75 62 6c double d, doubl
1c60: 65 20 65 2c 20 64 6f 75 62 6c 65 20 66 2c 0a 20 e e, double f,.
1c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 6f 75 dou
1c80: 62 6c 65 20 67 2c 20 64 6f 75 62 6c 65 20 68 2c ble g, double h,
1c90: 20 64 6f 75 62 6c 65 20 69 2c 20 64 6f 75 62 6c double i, doubl
1ca0: 65 20 6a 2c 20 64 6f 75 62 6c 65 20 6b 2c 20 64 e j, double k, d
1cb0: 6f 75 62 6c 65 20 6c 2c 0a 20 20 20 20 20 20 20 ouble l,.
1cc0: 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 6d 2c double m,
1cd0: 20 64 6f 75 62 6c 65 20 6e 2c 20 64 6f 75 62 6c double n, doubl
1ce0: 65 20 6f 2c 20 64 6f 75 62 6c 65 20 70 29 0a 7b e o, double p).{
1cf0: 0a 20 20 64 6f 75 62 6c 65 20 72 3d 61 2b 62 2b . double r=a+b+
1d00: 63 2b 64 2b 65 2b 66 2b 67 2b 68 2b 69 2b 6a 2b c+d+e+f+g+h+i+j+
1d10: 6b 2b 6c 2b 6d 2b 6e 2b 6f 2b 70 3b 0a 20 20 66 k+l+m+n+o+p;. f
1d20: 70 72 69 6e 74 66 28 6f 75 74 2c 22 64 6f 75 62 printf(out,"doub
1d30: 6c 65 20 66 28 31 36 2a 64 6f 75 62 6c 65 29 3a le f(16*double):
1d40: 28 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c (%g,%g,%g,%g,%g,
1d50: 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 %g,%g,%g,%g,%g,%
1d60: 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 g,%g,%g,%g,%g,%g
1d70: 29 22 2c 61 2c 62 2c 63 2c 64 2c 65 2c 66 2c 67 )",a,b,c,d,e,f,g
1d80: 2c 68 2c 69 2c 6a 2c 6b 2c 6c 2c 6d 2c 6e 2c 6f ,h,i,j,k,l,m,n,o
1d90: 2c 70 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 ,p);. fflush(ou
1da0: 74 29 3b 0a 20 20 72 65 74 75 72 6e 20 72 3b 0a t);. return r;.
1db0: 7d 0a 0a 2f 2a 20 70 6f 69 6e 74 65 72 20 74 65 }../* pointer te
1dc0: 73 74 73 20 2a 2f 0a 76 6f 69 64 2a 20 76 70 5f sts */.void* vp_
1dd0: 76 70 64 70 63 70 73 70 20 28 76 6f 69 64 2a 20 vpdpcpsp (void*
1de0: 61 2c 20 64 6f 75 62 6c 65 2a 20 62 2c 20 63 68 a, double* b, ch
1df0: 61 72 2a 20 63 2c 20 49 6e 74 2a 20 64 29 0a 7b ar* c, Int* d).{
1e00: 0a 20 20 76 6f 69 64 2a 20 72 65 74 20 3d 20 28 . void* ret = (
1e10: 63 68 61 72 2a 29 62 20 2b 20 31 3b 0a 20 20 66 char*)b + 1;. f
1e20: 70 72 69 6e 74 66 28 6f 75 74 2c 22 76 6f 69 64 printf(out,"void
1e30: 2a 20 66 28 76 6f 69 64 2a 2c 64 6f 75 62 6c 65 * f(void*,double
1e40: 2a 2c 63 68 61 72 2a 2c 49 6e 74 2a 29 3a 28 30 *,char*,Int*):(0
1e50: 78 25 6c 78 2c 30 78 25 6c 78 2c 30 78 25 6c 78 x%lx,0x%lx,0x%lx
1e60: 2c 30 78 25 6c 78 29 22 2c 28 6c 6f 6e 67 29 61 ,0x%lx)",(long)a
1e70: 2c 28 6c 6f 6e 67 29 62 2c 28 6c 6f 6e 67 29 63 ,(long)b,(long)c
1e80: 2c 28 6c 6f 6e 67 29 64 29 3b 0a 20 20 66 66 6c ,(long)d);. ffl
1e90: 75 73 68 28 6f 75 74 29 3b 0a 20 20 72 65 74 75 ush(out);. retu
1ea0: 72 6e 20 72 65 74 3b 0a 7d 0a 0a 2f 2a 20 6d 69 rn ret;.}../* mi
1eb0: 78 65 64 20 6e 75 6d 62 65 72 20 74 65 73 74 73 xed number tests
1ec0: 20 2a 2f 0a 75 63 68 61 72 20 75 63 5f 75 63 73 */.uchar uc_ucs
1ed0: 69 6c 20 28 75 63 68 61 72 20 61 2c 20 75 73 68 il (uchar a, ush
1ee0: 6f 72 74 20 62 2c 20 75 69 6e 74 20 63 2c 20 75 ort b, uint c, u
1ef0: 6c 6f 6e 67 20 64 29 0a 7b 0a 20 20 75 63 68 61 long d).{. ucha
1f00: 72 20 72 20 3d 20 28 75 63 68 61 72 29 2d 31 3b r r = (uchar)-1;
1f10: 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 . fprintf(out,"
1f20: 75 63 68 61 72 20 66 28 75 63 68 61 72 2c 75 73 uchar f(uchar,us
1f30: 68 6f 72 74 2c 75 69 6e 74 2c 75 6c 6f 6e 67 29 hort,uint,ulong)
1f40: 3a 28 25 75 2c 25 75 2c 25 75 2c 25 6c 75 29 22 :(%u,%u,%u,%lu)"
1f50: 2c 61 2c 62 2c 63 2c 64 29 3b 0a 20 20 66 66 6c ,a,b,c,d);. ffl
1f60: 75 73 68 28 6f 75 74 29 3b 0a 20 20 72 65 74 75 ush(out);. retu
1f70: 72 6e 20 72 3b 0a 7d 0a 64 6f 75 62 6c 65 20 64 rn r;.}.double d
1f80: 5f 69 69 64 64 20 28 69 6e 74 20 61 2c 20 69 6e _iidd (int a, in
1f90: 74 20 62 2c 20 64 6f 75 62 6c 65 20 63 2c 20 64 t b, double c, d
1fa0: 6f 75 62 6c 65 20 64 29 0a 7b 0a 20 20 64 6f 75 ouble d).{. dou
1fb0: 62 6c 65 20 72 20 3d 20 61 2b 62 2b 63 2b 64 3b ble r = a+b+c+d;
1fc0: 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 . fprintf(out,"
1fd0: 64 6f 75 62 6c 65 20 66 28 69 6e 74 2c 69 6e 74 double f(int,int
1fe0: 2c 64 6f 75 62 6c 65 2c 64 6f 75 62 6c 65 29 3a ,double,double):
1ff0: 28 25 64 2c 25 64 2c 25 67 2c 25 67 29 22 2c 61 (%d,%d,%g,%g)",a
2000: 2c 62 2c 63 2c 64 29 3b 0a 20 20 66 66 6c 75 73 ,b,c,d);. fflus
2010: 68 28 6f 75 74 29 3b 0a 20 20 72 65 74 75 72 6e h(out);. return
2020: 20 72 3b 0a 7d 0a 64 6f 75 62 6c 65 20 64 5f 69 r;.}.double d_i
2030: 64 69 64 20 28 69 6e 74 20 61 2c 20 64 6f 75 62 did (int a, doub
2040: 6c 65 20 62 2c 20 69 6e 74 20 63 2c 20 64 6f 75 le b, int c, dou
2050: 62 6c 65 20 64 29 0a 7b 0a 20 20 64 6f 75 62 6c ble d).{. doubl
2060: 65 20 72 20 3d 20 61 2b 62 2b 63 2b 64 3b 0a 20 e r = a+b+c+d;.
2070: 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 64 6f fprintf(out,"do
2080: 75 62 6c 65 20 66 28 69 6e 74 2c 64 6f 75 62 6c uble f(int,doubl
2090: 65 2c 69 6e 74 2c 64 6f 75 62 6c 65 29 3a 28 25 e,int,double):(%
20a0: 64 2c 25 67 2c 25 64 2c 25 67 29 22 2c 61 2c 62 d,%g,%d,%g)",a,b
20b0: 2c 63 2c 64 29 3b 0a 20 20 66 66 6c 75 73 68 28 ,c,d);. fflush(
20c0: 6f 75 74 29 3b 0a 20 20 72 65 74 75 72 6e 20 72 out);. return r
20d0: 3b 0a 7d 0a 75 73 68 6f 72 74 20 75 73 5f 63 64 ;.}.ushort us_cd
20e0: 63 64 20 28 63 68 61 72 20 61 2c 20 64 6f 75 62 cd (char a, doub
20f0: 6c 65 20 62 2c 20 63 68 61 72 20 63 2c 20 64 6f le b, char c, do
2100: 75 62 6c 65 20 64 29 0a 7b 0a 20 20 75 73 68 6f uble d).{. usho
2110: 72 74 20 72 20 3d 20 28 75 73 68 6f 72 74 29 28 rt r = (ushort)(
2120: 61 20 2b 20 62 20 2b 20 63 20 2b 20 64 29 3b 0a a + b + c + d);.
2130: 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 75 fprintf(out,"u
2140: 73 68 6f 72 74 20 66 28 63 68 61 72 2c 64 6f 75 short f(char,dou
2150: 62 6c 65 2c 63 68 61 72 2c 64 6f 75 62 6c 65 29 ble,char,double)
2160: 3a 28 27 25 63 27 2c 25 67 2c 27 25 63 27 2c 25 :('%c',%g,'%c',%
2170: 67 29 22 2c 61 2c 62 2c 63 2c 64 29 3b 0a 20 20 g)",a,b,c,d);.
2180: 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 72 fflush(out);. r
2190: 65 74 75 72 6e 20 72 3b 0a 7d 0a 0a 23 69 66 64 eturn r;.}..#ifd
21a0: 65 66 20 48 41 56 45 5f 4c 4f 4e 47 5f 4c 4f 4e ef HAVE_LONG_LON
21b0: 47 0a 6c 6f 6e 67 20 6c 6f 6e 67 20 6c 6c 5f 66 G.long long ll_f
21c0: 6c 6c 69 20 28 66 6c 6f 61 74 20 61 2c 20 6c 6f lli (float a, lo
21d0: 6e 67 20 6c 6f 6e 67 20 62 2c 20 69 6e 74 20 63 ng long b, int c
21e0: 29 0a 7b 0a 20 20 6c 6f 6e 67 20 6c 6f 6e 67 20 ).{. long long
21f0: 72 20 3d 20 28 6c 6f 6e 67 20 6c 6f 6e 67 29 28 r = (long long)(
2200: 69 6e 74 29 61 20 2b 20 62 20 2b 20 28 6c 6f 6e int)a + b + (lon
2210: 67 20 6c 6f 6e 67 29 63 3b 0a 20 20 66 70 72 69 g long)c;. fpri
2220: 6e 74 66 28 6f 75 74 2c 22 6c 6f 6e 67 20 6c 6f ntf(out,"long lo
2230: 6e 67 20 66 28 66 6c 6f 61 74 2c 6c 6f 6e 67 20 ng f(float,long
2240: 6c 6f 6e 67 2c 69 6e 74 29 3a 28 25 67 2c 30 78 long,int):(%g,0x
2250: 25 6c 78 25 30 38 6c 78 2c 30 78 25 6c 78 29 22 %lx%08lx,0x%lx)"
2260: 2c 61 2c 28 6c 6f 6e 67 29 28 62 3e 3e 33 32 29 ,a,(long)(b>>32)
2270: 2c 28 6c 6f 6e 67 29 28 62 26 30 78 66 66 66 66 ,(long)(b&0xffff
2280: 66 66 66 66 29 2c 28 6c 6f 6e 67 29 63 29 3b 0a ffff),(long)c);.
2290: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 fflush(out);.
22a0: 20 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 23 65 6e return r;.}.#en
22b0: 64 69 66 0a 0a 2f 2a 20 73 74 72 75 63 74 75 72 dif../* structur
22c0: 65 20 74 65 73 74 73 20 2a 2f 0a 49 6e 74 20 49 e tests */.Int I
22d0: 5f 49 49 49 20 28 49 6e 74 20 61 2c 20 49 6e 74 _III (Int a, Int
22e0: 20 62 2c 20 49 6e 74 20 63 29 0a 7b 0a 20 20 49 b, Int c).{. I
22f0: 6e 74 20 72 3b 0a 20 20 72 2e 78 20 3d 20 61 2e nt r;. r.x = a.
2300: 78 20 2b 20 62 2e 78 20 2b 20 63 2e 78 3b 0a 20 x + b.x + c.x;.
2310: 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 49 6e fprintf(out,"In
2320: 74 20 66 28 49 6e 74 2c 49 6e 74 2c 49 6e 74 29 t f(Int,Int,Int)
2330: 3a 28 7b 25 64 7d 2c 7b 25 64 7d 2c 7b 25 64 7d :({%d},{%d},{%d}
2340: 29 22 2c 61 2e 78 2c 62 2e 78 2c 63 2e 78 29 3b )",a.x,b.x,c.x);
2350: 0a 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a . fflush(out);.
2360: 20 20 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 43 68 return r;.}.Ch
2370: 61 72 20 43 5f 43 64 43 20 28 43 68 61 72 20 61 ar C_CdC (Char a
2380: 2c 20 64 6f 75 62 6c 65 20 62 2c 20 43 68 61 72 , double b, Char
2390: 20 63 29 0a 7b 0a 20 20 43 68 61 72 20 72 3b 0a c).{. Char r;.
23a0: 20 20 72 2e 78 20 3d 20 28 61 2e 78 20 2b 20 63 r.x = (a.x + c
23b0: 2e 78 29 2f 32 3b 0a 20 20 66 70 72 69 6e 74 66 .x)/2;. fprintf
23c0: 28 6f 75 74 2c 22 43 68 61 72 20 66 28 43 68 61 (out,"Char f(Cha
23d0: 72 2c 64 6f 75 62 6c 65 2c 43 68 61 72 29 3a 28 r,double,Char):(
23e0: 7b 27 25 63 27 7d 2c 25 67 2c 7b 27 25 63 27 7d {'%c'},%g,{'%c'}
23f0: 29 22 2c 61 2e 78 2c 62 2c 63 2e 78 29 3b 0a 20 )",a.x,b,c.x);.
2400: 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 fflush(out);.
2410: 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 46 6c 6f 61 return r;.}.Floa
2420: 74 20 46 5f 46 66 64 20 28 46 6c 6f 61 74 20 61 t F_Ffd (Float a
2430: 2c 20 66 6c 6f 61 74 20 62 2c 20 64 6f 75 62 6c , float b, doubl
2440: 65 20 63 29 0a 7b 0a 20 20 46 6c 6f 61 74 20 72 e c).{. Float r
2450: 3b 0a 20 20 72 2e 78 20 3d 20 61 2e 78 20 2b 20 ;. r.x = a.x +
2460: 62 20 2b 20 63 3b 0a 20 20 66 70 72 69 6e 74 66 b + c;. fprintf
2470: 28 6f 75 74 2c 22 46 6c 6f 61 74 20 66 28 46 6c (out,"Float f(Fl
2480: 6f 61 74 2c 66 6c 6f 61 74 2c 64 6f 75 62 6c 65 oat,float,double
2490: 29 3a 28 7b 25 67 7d 2c 25 67 2c 25 67 29 22 2c ):({%g},%g,%g)",
24a0: 61 2e 78 2c 62 2c 63 29 3b 0a 20 20 66 66 6c 75 a.x,b,c);. fflu
24b0: 73 68 28 6f 75 74 29 3b 0a 20 20 72 65 74 75 72 sh(out);. retur
24c0: 6e 20 72 3b 0a 7d 0a 44 6f 75 62 6c 65 20 44 5f n r;.}.Double D_
24d0: 66 44 64 20 28 66 6c 6f 61 74 20 61 2c 20 44 6f fDd (float a, Do
24e0: 75 62 6c 65 20 62 2c 20 64 6f 75 62 6c 65 20 63 uble b, double c
24f0: 29 0a 7b 0a 20 20 44 6f 75 62 6c 65 20 72 3b 0a ).{. Double r;.
2500: 20 20 72 2e 78 20 3d 20 61 20 2b 20 62 2e 78 20 r.x = a + b.x
2510: 2b 20 63 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f + c;. fprintf(o
2520: 75 74 2c 22 44 6f 75 62 6c 65 20 66 28 66 6c 6f ut,"Double f(flo
2530: 61 74 2c 44 6f 75 62 6c 65 2c 64 6f 75 62 6c 65 at,Double,double
2540: 29 3a 28 25 67 2c 7b 25 67 7d 2c 25 67 29 22 2c ):(%g,{%g},%g)",
2550: 61 2c 62 2e 78 2c 63 29 3b 0a 20 20 66 66 6c 75 a,b.x,c);. fflu
2560: 73 68 28 6f 75 74 29 3b 0a 20 20 72 65 74 75 72 sh(out);. retur
2570: 6e 20 72 3b 0a 7d 0a 4a 20 4a 5f 4a 69 4a 20 28 n r;.}.J J_JiJ (
2580: 4a 20 61 2c 20 69 6e 74 20 62 2c 20 4a 20 63 29 J a, int b, J c)
2590: 0a 7b 0a 20 20 4a 20 72 3b 0a 20 20 72 2e 6c 31 .{. J r;. r.l1
25a0: 20 3d 20 61 2e 6c 31 2b 63 2e 6c 31 3b 20 72 2e = a.l1+c.l1; r.
25b0: 6c 32 20 3d 20 61 2e 6c 32 2b 62 2b 63 2e 6c 32 l2 = a.l2+b+c.l2
25c0: 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c ;. fprintf(out,
25d0: 22 4a 20 66 28 4a 2c 69 6e 74 2c 4a 29 3a 28 7b "J f(J,int,J):({
25e0: 25 6c 64 2c 25 6c 64 7d 2c 25 64 2c 7b 25 6c 64 %ld,%ld},%d,{%ld
25f0: 2c 25 6c 64 7d 29 22 2c 61 2e 6c 31 2c 61 2e 6c ,%ld})",a.l1,a.l
2600: 32 2c 62 2c 63 2e 6c 31 2c 63 2e 6c 32 29 3b 0a 2,b,c.l1,c.l2);.
2610: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 fflush(out);.
2620: 20 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 54 20 54 return r;.}.T T
2630: 5f 54 63 54 20 28 54 20 61 2c 20 63 68 61 72 20 _TcT (T a, char
2640: 62 2c 20 54 20 63 29 0a 7b 0a 20 20 54 20 72 3b b, T c).{. T r;
2650: 0a 20 20 72 2e 63 5b 30 5d 3d 27 62 27 3b 20 72 . r.c[0]='b'; r
2660: 2e 63 5b 31 5d 3d 63 2e 63 5b 31 5d 3b 20 72 2e .c[1]=c.c[1]; r.
2670: 63 5b 32 5d 3d 63 2e 63 5b 32 5d 3b 0a 20 20 66 c[2]=c.c[2];. f
2680: 70 72 69 6e 74 66 28 6f 75 74 2c 22 54 20 66 28 printf(out,"T f(
2690: 54 2c 63 68 61 72 2c 54 29 3a 28 7b 5c 22 25 63 T,char,T):({\"%c
26a0: 25 63 25 63 5c 22 7d 2c 27 25 63 27 2c 7b 5c 22 %c%c\"},'%c',{\"
26b0: 25 63 25 63 25 63 5c 22 7d 29 22 2c 61 2e 63 5b %c%c%c\"})",a.c[
26c0: 30 5d 2c 61 2e 63 5b 31 5d 2c 61 2e 63 5b 32 5d 0],a.c[1],a.c[2]
26d0: 2c 62 2c 63 2e 63 5b 30 5d 2c 63 2e 63 5b 31 5d ,b,c.c[0],c.c[1]
26e0: 2c 63 2e 63 5b 32 5d 29 3b 0a 20 20 66 66 6c 75 ,c.c[2]);. fflu
26f0: 73 68 28 6f 75 74 29 3b 0a 20 20 72 65 74 75 72 sh(out);. retur
2700: 6e 20 72 3b 0a 7d 0a 58 20 58 5f 42 63 64 42 20 n r;.}.X X_BcdB
2710: 28 42 20 61 2c 20 63 68 61 72 20 62 2c 20 64 6f (B a, char b, do
2720: 75 62 6c 65 20 63 2c 20 42 20 64 29 0a 7b 0a 20 uble c, B d).{.
2730: 20 73 74 61 74 69 63 20 58 20 78 72 3d 7b 22 72 static X xr={"r
2740: 65 74 75 72 6e 20 76 61 6c 22 2c 27 52 27 7d 3b eturn val",'R'};
2750: 0a 20 20 58 20 72 3b 0a 20 20 72 20 3d 20 78 72 . X r;. r = xr
2760: 3b 0a 20 20 72 2e 63 31 20 3d 20 62 3b 0a 20 20 ;. r.c1 = b;.
2770: 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 58 20 66 fprintf(out,"X f
2780: 28 42 2c 63 68 61 72 2c 64 6f 75 62 6c 65 2c 42 (B,char,double,B
2790: 29 3a 28 7b 25 67 2c 7b 25 64 2c 25 64 2c 25 64 ):({%g,{%d,%d,%d
27a0: 7d 7d 2c 27 25 63 27 2c 25 67 2c 7b 25 67 2c 7b }},'%c',%g,{%g,{
27b0: 25 64 2c 25 64 2c 25 64 7d 7d 29 22 2c 0a 20 20 %d,%d,%d}})",.
27c0: 20 20 20 20 20 20 20 20 61 2e 64 2c 61 2e 69 5b a.d,a.i[
27d0: 30 5d 2c 61 2e 69 5b 31 5d 2c 61 2e 69 5b 32 5d 0],a.i[1],a.i[2]
27e0: 2c 62 2c 63 2c 64 2e 64 2c 64 2e 69 5b 30 5d 2c ,b,c,d.d,d.i[0],
27f0: 64 2e 69 5b 31 5d 2c 64 2e 69 5b 32 5d 29 3b 0a d.i[1],d.i[2]);.
2800: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 fflush(out);.
2810: 20 72 65 74 75 72 6e 20 72 3b 0a 7d 0a 0a 0a 2f return r;.}.../
2820: 2a 20 54 68 65 73 65 20 66 75 6e 63 74 69 6f 6e * These function
2830: 73 20 73 69 6d 75 6c 61 74 65 20 74 68 65 20 62 s simulate the b
2840: 65 68 61 76 69 6f 75 72 20 6f 66 20 74 68 65 20 ehaviour of the
2850: 66 75 6e 63 74 69 6f 6e 73 20 61 62 6f 76 65 2e functions above.
2860: 20 2a 2f 0a 0a 2f 2a 20 76 6f 69 64 20 74 65 73 */../* void tes
2870: 74 73 20 2a 2f 0a 76 6f 69 64 20 76 5f 76 5f 73 ts */.void v_v_s
2880: 69 6d 75 6c 61 74 6f 72 20 28 76 6f 69 64 2a 20 imulator (void*
2890: 64 61 74 61 2c 20 76 61 5f 61 6c 69 73 74 20 61 data, va_alist a
28a0: 6c 69 73 74 29 0a 7b 0a 20 20 69 66 20 28 64 61 list).{. if (da
28b0: 74 61 20 21 3d 20 28 76 6f 69 64 2a 29 26 76 5f ta != (void*)&v_
28c0: 76 29 20 7b 20 66 70 72 69 6e 74 66 28 6f 75 74 v) { fprintf(out
28d0: 2c 22 77 72 6f 6e 67 20 64 61 74 61 20 66 6f 72 ,"wrong data for
28e0: 20 76 5f 76 5c 6e 22 29 3b 20 65 78 69 74 28 31 v_v\n"); exit(1
28f0: 29 3b 20 7d 0a 20 20 76 61 5f 73 74 61 72 74 5f ); }. va_start_
2900: 76 6f 69 64 28 61 6c 69 73 74 29 3b 0a 20 20 66 void(alist);. f
2910: 70 72 69 6e 74 66 28 6f 75 74 2c 22 76 6f 69 64 printf(out,"void
2920: 20 66 28 76 6f 69 64 29 3a 5c 6e 22 29 3b 0a 20 f(void):\n");.
2930: 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 fflush(out);.
2940: 76 61 5f 72 65 74 75 72 6e 5f 76 6f 69 64 28 61 va_return_void(a
2950: 6c 69 73 74 29 3b 0a 7d 0a 0a 2f 2a 20 69 6e 74 list);.}../* int
2960: 20 74 65 73 74 73 20 2a 2f 0a 76 6f 69 64 20 69 tests */.void i
2970: 5f 76 5f 73 69 6d 75 6c 61 74 6f 72 20 28 76 6f _v_simulator (vo
2980: 69 64 2a 20 64 61 74 61 2c 20 76 61 5f 61 6c 69 id* data, va_ali
2990: 73 74 20 61 6c 69 73 74 29 0a 7b 0a 20 20 69 66 st alist).{. if
29a0: 20 28 64 61 74 61 20 21 3d 20 28 76 6f 69 64 2a (data != (void*
29b0: 29 26 69 5f 76 29 20 7b 20 66 70 72 69 6e 74 66 )&i_v) { fprintf
29c0: 28 6f 75 74 2c 22 77 72 6f 6e 67 20 64 61 74 61 (out,"wrong data
29d0: 20 66 6f 72 20 69 5f 76 5c 6e 22 29 3b 20 65 78 for i_v\n"); ex
29e0: 69 74 28 31 29 3b 20 7d 0a 20 20 76 61 5f 73 74 it(1); }. va_st
29f0: 61 72 74 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a art_int(alist);.
2a00: 20 7b 69 6e 74 20 72 3d 39 39 3b 0a 20 20 66 70 {int r=99;. fp
2a10: 72 69 6e 74 66 28 6f 75 74 2c 22 69 6e 74 20 66 rintf(out,"int f
2a20: 28 76 6f 69 64 29 3a 22 29 3b 0a 20 20 66 66 6c (void):");. ffl
2a30: 75 73 68 28 6f 75 74 29 3b 0a 20 20 76 61 5f 72 ush(out);. va_r
2a40: 65 74 75 72 6e 5f 69 6e 74 28 61 6c 69 73 74 2c eturn_int(alist,
2a50: 20 72 29 3b 0a 7d 7d 0a 76 6f 69 64 20 69 5f 69 r);.}}.void i_i
2a60: 5f 73 69 6d 75 6c 61 74 6f 72 20 28 76 6f 69 64 _simulator (void
2a70: 2a 20 64 61 74 61 2c 20 76 61 5f 61 6c 69 73 74 * data, va_alist
2a80: 20 61 6c 69 73 74 29 0a 7b 0a 20 20 69 66 20 28 alist).{. if (
2a90: 64 61 74 61 20 21 3d 20 28 76 6f 69 64 2a 29 26 data != (void*)&
2aa0: 69 5f 69 29 20 7b 20 66 70 72 69 6e 74 66 28 6f i_i) { fprintf(o
2ab0: 75 74 2c 22 77 72 6f 6e 67 20 64 61 74 61 20 66 ut,"wrong data f
2ac0: 6f 72 20 69 5f 69 5c 6e 22 29 3b 20 65 78 69 74 or i_i\n"); exit
2ad0: 28 31 29 3b 20 7d 0a 20 20 76 61 5f 73 74 61 72 (1); }. va_star
2ae0: 74 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 7b t_int(alist);. {
2af0: 69 6e 74 20 61 20 3d 20 76 61 5f 61 72 67 5f 69 int a = va_arg_i
2b00: 6e 74 28 61 6c 69 73 74 29 3b 0a 20 20 69 6e 74 nt(alist);. int
2b10: 20 72 3d 61 2b 31 3b 0a 20 20 66 70 72 69 6e 74 r=a+1;. fprint
2b20: 66 28 6f 75 74 2c 22 69 6e 74 20 66 28 69 6e 74 f(out,"int f(int
2b30: 29 3a 28 25 64 29 22 2c 61 29 3b 0a 20 20 66 66 ):(%d)",a);. ff
2b40: 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 76 61 5f lush(out);. va_
2b50: 72 65 74 75 72 6e 5f 69 6e 74 28 61 6c 69 73 74 return_int(alist
2b60: 2c 20 72 29 3b 0a 7d 7d 0a 76 6f 69 64 20 69 5f , r);.}}.void i_
2b70: 69 32 5f 73 69 6d 75 6c 61 74 6f 72 20 28 76 6f i2_simulator (vo
2b80: 69 64 2a 20 64 61 74 61 2c 20 76 61 5f 61 6c 69 id* data, va_ali
2b90: 73 74 20 61 6c 69 73 74 29 0a 7b 0a 20 20 69 66 st alist).{. if
2ba0: 20 28 64 61 74 61 20 21 3d 20 28 76 6f 69 64 2a (data != (void*
2bb0: 29 26 69 5f 69 32 29 20 7b 20 66 70 72 69 6e 74 )&i_i2) { fprint
2bc0: 66 28 6f 75 74 2c 22 77 72 6f 6e 67 20 64 61 74 f(out,"wrong dat
2bd0: 61 20 66 6f 72 20 69 5f 69 32 5c 6e 22 29 3b 20 a for i_i2\n");
2be0: 65 78 69 74 28 31 29 3b 20 7d 0a 20 20 76 61 5f exit(1); }. va_
2bf0: 73 74 61 72 74 5f 69 6e 74 28 61 6c 69 73 74 29 start_int(alist)
2c00: 3b 0a 20 7b 69 6e 74 20 61 20 3d 20 76 61 5f 61 ;. {int a = va_a
2c10: 72 67 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 rg_int(alist);.
2c20: 20 69 6e 74 20 62 20 3d 20 76 61 5f 61 72 67 5f int b = va_arg_
2c30: 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 20 69 6e int(alist);. in
2c40: 74 20 72 3d 61 2b 62 3b 0a 20 20 66 70 72 69 6e t r=a+b;. fprin
2c50: 74 66 28 6f 75 74 2c 22 69 6e 74 20 66 28 32 2a tf(out,"int f(2*
2c60: 69 6e 74 29 3a 28 25 64 2c 25 64 29 22 2c 61 2c int):(%d,%d)",a,
2c70: 62 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 74 b);. fflush(out
2c80: 29 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e 5f 69 );. va_return_i
2c90: 6e 74 28 61 6c 69 73 74 2c 20 72 29 3b 0a 7d 7d nt(alist, r);.}}
2ca0: 0a 76 6f 69 64 20 69 5f 69 34 5f 73 69 6d 75 6c .void i_i4_simul
2cb0: 61 74 6f 72 20 28 76 6f 69 64 2a 20 64 61 74 61 ator (void* data
2cc0: 2c 20 76 61 5f 61 6c 69 73 74 20 61 6c 69 73 74 , va_alist alist
2cd0: 29 0a 7b 0a 20 20 69 66 20 28 64 61 74 61 20 21 ).{. if (data !
2ce0: 3d 20 28 76 6f 69 64 2a 29 26 69 5f 69 34 29 20 = (void*)&i_i4)
2cf0: 7b 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 77 { fprintf(out,"w
2d00: 72 6f 6e 67 20 64 61 74 61 20 66 6f 72 20 69 5f rong data for i_
2d10: 69 34 5c 6e 22 29 3b 20 65 78 69 74 28 31 29 3b i4\n"); exit(1);
2d20: 20 7d 0a 20 20 76 61 5f 73 74 61 72 74 5f 69 6e }. va_start_in
2d30: 74 28 61 6c 69 73 74 29 3b 0a 20 7b 69 6e 74 20 t(alist);. {int
2d40: 61 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28 61 a = va_arg_int(a
2d50: 6c 69 73 74 29 3b 0a 20 20 69 6e 74 20 62 20 3d list);. int b =
2d60: 20 76 61 5f 61 72 67 5f 69 6e 74 28 61 6c 69 73 va_arg_int(alis
2d70: 74 29 3b 0a 20 20 69 6e 74 20 63 20 3d 20 76 61 t);. int c = va
2d80: 5f 61 72 67 5f 69 6e 74 28 61 6c 69 73 74 29 3b _arg_int(alist);
2d90: 0a 20 20 69 6e 74 20 64 20 3d 20 76 61 5f 61 72 . int d = va_ar
2da0: 67 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 20 g_int(alist);.
2db0: 69 6e 74 20 72 3d 61 2b 62 2b 63 2b 64 3b 0a 20 int r=a+b+c+d;.
2dc0: 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 69 6e fprintf(out,"in
2dd0: 74 20 66 28 34 2a 69 6e 74 29 3a 28 25 64 2c 25 t f(4*int):(%d,%
2de0: 64 2c 25 64 2c 25 64 29 22 2c 61 2c 62 2c 63 2c d,%d,%d)",a,b,c,
2df0: 64 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 74 d);. fflush(out
2e00: 29 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e 5f 69 );. va_return_i
2e10: 6e 74 28 61 6c 69 73 74 2c 20 72 29 3b 0a 7d 7d nt(alist, r);.}}
2e20: 0a 76 6f 69 64 20 69 5f 69 38 5f 73 69 6d 75 6c .void i_i8_simul
2e30: 61 74 6f 72 20 28 76 6f 69 64 2a 20 64 61 74 61 ator (void* data
2e40: 2c 20 76 61 5f 61 6c 69 73 74 20 61 6c 69 73 74 , va_alist alist
2e50: 29 0a 7b 0a 20 20 69 66 20 28 64 61 74 61 20 21 ).{. if (data !
2e60: 3d 20 28 76 6f 69 64 2a 29 26 69 5f 69 38 29 20 = (void*)&i_i8)
2e70: 7b 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 77 { fprintf(out,"w
2e80: 72 6f 6e 67 20 64 61 74 61 20 66 6f 72 20 69 5f rong data for i_
2e90: 69 38 5c 6e 22 29 3b 20 65 78 69 74 28 31 29 3b i8\n"); exit(1);
2ea0: 20 7d 0a 20 20 76 61 5f 73 74 61 72 74 5f 69 6e }. va_start_in
2eb0: 74 28 61 6c 69 73 74 29 3b 0a 20 7b 69 6e 74 20 t(alist);. {int
2ec0: 61 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28 61 a = va_arg_int(a
2ed0: 6c 69 73 74 29 3b 0a 20 20 69 6e 74 20 62 20 3d list);. int b =
2ee0: 20 76 61 5f 61 72 67 5f 69 6e 74 28 61 6c 69 73 va_arg_int(alis
2ef0: 74 29 3b 0a 20 20 69 6e 74 20 63 20 3d 20 76 61 t);. int c = va
2f00: 5f 61 72 67 5f 69 6e 74 28 61 6c 69 73 74 29 3b _arg_int(alist);
2f10: 0a 20 20 69 6e 74 20 64 20 3d 20 76 61 5f 61 72 . int d = va_ar
2f20: 67 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 20 g_int(alist);.
2f30: 69 6e 74 20 65 20 3d 20 76 61 5f 61 72 67 5f 69 int e = va_arg_i
2f40: 6e 74 28 61 6c 69 73 74 29 3b 0a 20 20 69 6e 74 nt(alist);. int
2f50: 20 66 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28 f = va_arg_int(
2f60: 61 6c 69 73 74 29 3b 0a 20 20 69 6e 74 20 67 20 alist);. int g
2f70: 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28 61 6c 69 = va_arg_int(ali
2f80: 73 74 29 3b 0a 20 20 69 6e 74 20 68 20 3d 20 76 st);. int h = v
2f90: 61 5f 61 72 67 5f 69 6e 74 28 61 6c 69 73 74 29 a_arg_int(alist)
2fa0: 3b 0a 20 20 69 6e 74 20 72 3d 61 2b 62 2b 63 2b ;. int r=a+b+c+
2fb0: 64 2b 65 2b 66 2b 67 2b 68 3b 0a 20 20 66 70 72 d+e+f+g+h;. fpr
2fc0: 69 6e 74 66 28 6f 75 74 2c 22 69 6e 74 20 66 28 intf(out,"int f(
2fd0: 38 2a 69 6e 74 29 3a 28 25 64 2c 25 64 2c 25 64 8*int):(%d,%d,%d
2fe0: 2c 25 64 2c 25 64 2c 25 64 2c 25 64 2c 25 64 29 ,%d,%d,%d,%d,%d)
2ff0: 22 2c 61 2c 62 2c 63 2c 64 2c 65 2c 66 2c 67 2c ",a,b,c,d,e,f,g,
3000: 68 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 74 h);. fflush(out
3010: 29 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e 5f 69 );. va_return_i
3020: 6e 74 28 61 6c 69 73 74 2c 20 72 29 3b 0a 7d 7d nt(alist, r);.}}
3030: 0a 76 6f 69 64 20 69 5f 69 31 36 5f 73 69 6d 75 .void i_i16_simu
3040: 6c 61 74 6f 72 20 28 76 6f 69 64 2a 20 64 61 74 lator (void* dat
3050: 61 2c 20 76 61 5f 61 6c 69 73 74 20 61 6c 69 73 a, va_alist alis
3060: 74 29 0a 7b 0a 20 20 69 66 20 28 64 61 74 61 20 t).{. if (data
3070: 21 3d 20 28 76 6f 69 64 2a 29 26 69 5f 69 31 36 != (void*)&i_i16
3080: 29 20 7b 20 66 70 72 69 6e 74 66 28 6f 75 74 2c ) { fprintf(out,
3090: 22 77 72 6f 6e 67 20 64 61 74 61 20 66 6f 72 20 "wrong data for
30a0: 69 5f 69 31 36 5c 6e 22 29 3b 20 65 78 69 74 28 i_i16\n"); exit(
30b0: 31 29 3b 20 7d 0a 20 20 76 61 5f 73 74 61 72 74 1); }. va_start
30c0: 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 7b 69 _int(alist);. {i
30d0: 6e 74 20 61 20 3d 20 76 61 5f 61 72 67 5f 69 6e nt a = va_arg_in
30e0: 74 28 61 6c 69 73 74 29 3b 0a 20 20 69 6e 74 20 t(alist);. int
30f0: 62 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28 61 b = va_arg_int(a
3100: 6c 69 73 74 29 3b 0a 20 20 69 6e 74 20 63 20 3d list);. int c =
3110: 20 76 61 5f 61 72 67 5f 69 6e 74 28 61 6c 69 73 va_arg_int(alis
3120: 74 29 3b 0a 20 20 69 6e 74 20 64 20 3d 20 76 61 t);. int d = va
3130: 5f 61 72 67 5f 69 6e 74 28 61 6c 69 73 74 29 3b _arg_int(alist);
3140: 0a 20 20 69 6e 74 20 65 20 3d 20 76 61 5f 61 72 . int e = va_ar
3150: 67 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 20 g_int(alist);.
3160: 69 6e 74 20 66 20 3d 20 76 61 5f 61 72 67 5f 69 int f = va_arg_i
3170: 6e 74 28 61 6c 69 73 74 29 3b 0a 20 20 69 6e 74 nt(alist);. int
3180: 20 67 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28 g = va_arg_int(
3190: 61 6c 69 73 74 29 3b 0a 20 20 69 6e 74 20 68 20 alist);. int h
31a0: 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28 61 6c 69 = va_arg_int(ali
31b0: 73 74 29 3b 0a 20 20 69 6e 74 20 69 20 3d 20 76 st);. int i = v
31c0: 61 5f 61 72 67 5f 69 6e 74 28 61 6c 69 73 74 29 a_arg_int(alist)
31d0: 3b 0a 20 20 69 6e 74 20 6a 20 3d 20 76 61 5f 61 ;. int j = va_a
31e0: 72 67 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 rg_int(alist);.
31f0: 20 69 6e 74 20 6b 20 3d 20 76 61 5f 61 72 67 5f int k = va_arg_
3200: 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 20 69 6e int(alist);. in
3210: 74 20 6c 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74 t l = va_arg_int
3220: 28 61 6c 69 73 74 29 3b 0a 20 20 69 6e 74 20 6d (alist);. int m
3230: 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28 61 6c = va_arg_int(al
3240: 69 73 74 29 3b 0a 20 20 69 6e 74 20 6e 20 3d 20 ist);. int n =
3250: 76 61 5f 61 72 67 5f 69 6e 74 28 61 6c 69 73 74 va_arg_int(alist
3260: 29 3b 0a 20 20 69 6e 74 20 6f 20 3d 20 76 61 5f );. int o = va_
3270: 61 72 67 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a arg_int(alist);.
3280: 20 20 69 6e 74 20 70 20 3d 20 76 61 5f 61 72 67 int p = va_arg
3290: 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 20 69 _int(alist);. i
32a0: 6e 74 20 72 3d 61 2b 62 2b 63 2b 64 2b 65 2b 66 nt r=a+b+c+d+e+f
32b0: 2b 67 2b 68 2b 69 2b 6a 2b 6b 2b 6c 2b 6d 2b 6e +g+h+i+j+k+l+m+n
32c0: 2b 6f 2b 70 3b 0a 20 20 66 70 72 69 6e 74 66 28 +o+p;. fprintf(
32d0: 6f 75 74 2c 22 69 6e 74 20 66 28 31 36 2a 69 6e out,"int f(16*in
32e0: 74 29 3a 28 25 64 2c 25 64 2c 25 64 2c 25 64 2c t):(%d,%d,%d,%d,
32f0: 25 64 2c 25 64 2c 25 64 2c 25 64 2c 25 64 2c 25 %d,%d,%d,%d,%d,%
3300: 64 2c 25 64 2c 25 64 2c 25 64 2c 25 64 2c 25 64 d,%d,%d,%d,%d,%d
3310: 2c 25 64 29 22 2c 0a 20 20 20 20 20 20 20 20 20 ,%d)",.
3320: 20 61 2c 62 2c 63 2c 64 2c 65 2c 66 2c 67 2c 68 a,b,c,d,e,f,g,h
3330: 2c 69 2c 6a 2c 6b 2c 6c 2c 6d 2c 6e 2c 6f 2c 70 ,i,j,k,l,m,n,o,p
3340: 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 74 29 );. fflush(out)
3350: 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e 5f 69 6e ;. va_return_in
3360: 74 28 61 6c 69 73 74 2c 20 72 29 3b 0a 7d 7d 0a t(alist, r);.}}.
3370: 0a 2f 2a 20 66 6c 6f 61 74 20 74 65 73 74 73 20 ./* float tests
3380: 2a 2f 0a 76 6f 69 64 20 66 5f 66 5f 73 69 6d 75 */.void f_f_simu
3390: 6c 61 74 6f 72 20 28 76 6f 69 64 2a 20 64 61 74 lator (void* dat
33a0: 61 2c 20 76 61 5f 61 6c 69 73 74 20 61 6c 69 73 a, va_alist alis
33b0: 74 29 0a 7b 0a 20 20 69 66 20 28 64 61 74 61 20 t).{. if (data
33c0: 21 3d 20 28 76 6f 69 64 2a 29 26 66 5f 66 29 20 != (void*)&f_f)
33d0: 7b 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 77 { fprintf(out,"w
33e0: 72 6f 6e 67 20 64 61 74 61 20 66 6f 72 20 66 5f rong data for f_
33f0: 66 5c 6e 22 29 3b 20 65 78 69 74 28 31 29 3b 20 f\n"); exit(1);
3400: 7d 0a 20 20 76 61 5f 73 74 61 72 74 5f 66 6c 6f }. va_start_flo
3410: 61 74 28 61 6c 69 73 74 29 3b 0a 20 7b 66 6c 6f at(alist);. {flo
3420: 61 74 20 61 20 3d 20 76 61 5f 61 72 67 5f 66 6c at a = va_arg_fl
3430: 6f 61 74 28 61 6c 69 73 74 29 3b 0a 20 20 66 6c oat(alist);. fl
3440: 6f 61 74 20 72 3d 61 2b 31 2e 30 3b 0a 20 20 66 oat r=a+1.0;. f
3450: 70 72 69 6e 74 66 28 6f 75 74 2c 22 66 6c 6f 61 printf(out,"floa
3460: 74 20 66 28 66 6c 6f 61 74 29 3a 28 25 67 29 22 t f(float):(%g)"
3470: 2c 61 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 ,a);. fflush(ou
3480: 74 29 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e 5f t);. va_return_
3490: 66 6c 6f 61 74 28 61 6c 69 73 74 2c 20 72 29 3b float(alist, r);
34a0: 0a 7d 7d 0a 76 6f 69 64 20 66 5f 66 32 5f 73 69 .}}.void f_f2_si
34b0: 6d 75 6c 61 74 6f 72 20 28 76 6f 69 64 2a 20 64 mulator (void* d
34c0: 61 74 61 2c 20 76 61 5f 61 6c 69 73 74 20 61 6c ata, va_alist al
34d0: 69 73 74 29 0a 7b 0a 20 20 69 66 20 28 64 61 74 ist).{. if (dat
34e0: 61 20 21 3d 20 28 76 6f 69 64 2a 29 26 66 5f 66 a != (void*)&f_f
34f0: 32 29 20 7b 20 66 70 72 69 6e 74 66 28 6f 75 74 2) { fprintf(out
3500: 2c 22 77 72 6f 6e 67 20 64 61 74 61 20 66 6f 72 ,"wrong data for
3510: 20 66 5f 66 32 5c 6e 22 29 3b 20 65 78 69 74 28 f_f2\n"); exit(
3520: 31 29 3b 20 7d 0a 20 20 76 61 5f 73 74 61 72 74 1); }. va_start
3530: 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b 0a 20 _float(alist);.
3540: 7b 66 6c 6f 61 74 20 61 20 3d 20 76 61 5f 61 72 {float a = va_ar
3550: 67 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b 0a g_float(alist);.
3560: 20 20 66 6c 6f 61 74 20 62 20 3d 20 76 61 5f 61 float b = va_a
3570: 72 67 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b rg_float(alist);
3580: 0a 20 20 66 6c 6f 61 74 20 72 3d 61 2b 62 3b 0a . float r=a+b;.
3590: 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 66 fprintf(out,"f
35a0: 6c 6f 61 74 20 66 28 32 2a 66 6c 6f 61 74 29 3a loat f(2*float):
35b0: 28 25 67 2c 25 67 29 22 2c 61 2c 62 29 3b 0a 20 (%g,%g)",a,b);.
35c0: 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 fflush(out);.
35d0: 76 61 5f 72 65 74 75 72 6e 5f 66 6c 6f 61 74 28 va_return_float(
35e0: 61 6c 69 73 74 2c 20 72 29 3b 0a 7d 7d 0a 76 6f alist, r);.}}.vo
35f0: 69 64 20 66 5f 66 34 5f 73 69 6d 75 6c 61 74 6f id f_f4_simulato
3600: 72 20 28 76 6f 69 64 2a 20 64 61 74 61 2c 20 76 r (void* data, v
3610: 61 5f 61 6c 69 73 74 20 61 6c 69 73 74 29 0a 7b a_alist alist).{
3620: 0a 20 20 69 66 20 28 64 61 74 61 20 21 3d 20 28 . if (data != (
3630: 76 6f 69 64 2a 29 26 66 5f 66 34 29 20 7b 20 66 void*)&f_f4) { f
3640: 70 72 69 6e 74 66 28 6f 75 74 2c 22 77 72 6f 6e printf(out,"wron
3650: 67 20 64 61 74 61 20 66 6f 72 20 66 5f 66 34 5c g data for f_f4\
3660: 6e 22 29 3b 20 65 78 69 74 28 31 29 3b 20 7d 0a n"); exit(1); }.
3670: 20 20 76 61 5f 73 74 61 72 74 5f 66 6c 6f 61 74 va_start_float
3680: 28 61 6c 69 73 74 29 3b 0a 20 7b 66 6c 6f 61 74 (alist);. {float
3690: 20 61 20 3d 20 76 61 5f 61 72 67 5f 66 6c 6f 61 a = va_arg_floa
36a0: 74 28 61 6c 69 73 74 29 3b 0a 20 20 66 6c 6f 61 t(alist);. floa
36b0: 74 20 62 20 3d 20 76 61 5f 61 72 67 5f 66 6c 6f t b = va_arg_flo
36c0: 61 74 28 61 6c 69 73 74 29 3b 0a 20 20 66 6c 6f at(alist);. flo
36d0: 61 74 20 63 20 3d 20 76 61 5f 61 72 67 5f 66 6c at c = va_arg_fl
36e0: 6f 61 74 28 61 6c 69 73 74 29 3b 0a 20 20 66 6c oat(alist);. fl
36f0: 6f 61 74 20 64 20 3d 20 76 61 5f 61 72 67 5f 66 oat d = va_arg_f
3700: 6c 6f 61 74 28 61 6c 69 73 74 29 3b 0a 20 20 66 loat(alist);. f
3710: 6c 6f 61 74 20 72 3d 61 2b 62 2b 63 2b 64 3b 0a loat r=a+b+c+d;.
3720: 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 66 fprintf(out,"f
3730: 6c 6f 61 74 20 66 28 34 2a 66 6c 6f 61 74 29 3a loat f(4*float):
3740: 28 25 67 2c 25 67 2c 25 67 2c 25 67 29 22 2c 61 (%g,%g,%g,%g)",a
3750: 2c 62 2c 63 2c 64 29 3b 0a 20 20 66 66 6c 75 73 ,b,c,d);. fflus
3760: 68 28 6f 75 74 29 3b 0a 20 20 76 61 5f 72 65 74 h(out);. va_ret
3770: 75 72 6e 5f 66 6c 6f 61 74 28 61 6c 69 73 74 2c urn_float(alist,
3780: 20 72 29 3b 0a 7d 7d 0a 76 6f 69 64 20 66 5f 66 r);.}}.void f_f
3790: 38 5f 73 69 6d 75 6c 61 74 6f 72 20 28 76 6f 69 8_simulator (voi
37a0: 64 2a 20 64 61 74 61 2c 20 76 61 5f 61 6c 69 73 d* data, va_alis
37b0: 74 20 61 6c 69 73 74 29 0a 7b 0a 20 20 69 66 20 t alist).{. if
37c0: 28 64 61 74 61 20 21 3d 20 28 76 6f 69 64 2a 29 (data != (void*)
37d0: 26 66 5f 66 38 29 20 7b 20 66 70 72 69 6e 74 66 &f_f8) { fprintf
37e0: 28 6f 75 74 2c 22 77 72 6f 6e 67 20 64 61 74 61 (out,"wrong data
37f0: 20 66 6f 72 20 66 5f 66 38 5c 6e 22 29 3b 20 65 for f_f8\n"); e
3800: 78 69 74 28 31 29 3b 20 7d 0a 20 20 76 61 5f 73 xit(1); }. va_s
3810: 74 61 72 74 5f 66 6c 6f 61 74 28 61 6c 69 73 74 tart_float(alist
3820: 29 3b 0a 20 7b 66 6c 6f 61 74 20 61 20 3d 20 76 );. {float a = v
3830: 61 5f 61 72 67 5f 66 6c 6f 61 74 28 61 6c 69 73 a_arg_float(alis
3840: 74 29 3b 0a 20 20 66 6c 6f 61 74 20 62 20 3d 20 t);. float b =
3850: 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 61 6c 69 va_arg_float(ali
3860: 73 74 29 3b 0a 20 20 66 6c 6f 61 74 20 63 20 3d st);. float c =
3870: 20 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 61 6c va_arg_float(al
3880: 69 73 74 29 3b 0a 20 20 66 6c 6f 61 74 20 64 20 ist);. float d
3890: 3d 20 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 61 = va_arg_float(a
38a0: 6c 69 73 74 29 3b 0a 20 20 66 6c 6f 61 74 20 65 list);. float e
38b0: 20 3d 20 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 = va_arg_float(
38c0: 61 6c 69 73 74 29 3b 0a 20 20 66 6c 6f 61 74 20 alist);. float
38d0: 66 20 3d 20 76 61 5f 61 72 67 5f 66 6c 6f 61 74 f = va_arg_float
38e0: 28 61 6c 69 73 74 29 3b 0a 20 20 66 6c 6f 61 74 (alist);. float
38f0: 20 67 20 3d 20 76 61 5f 61 72 67 5f 66 6c 6f 61 g = va_arg_floa
3900: 74 28 61 6c 69 73 74 29 3b 0a 20 20 66 6c 6f 61 t(alist);. floa
3910: 74 20 68 20 3d 20 76 61 5f 61 72 67 5f 66 6c 6f t h = va_arg_flo
3920: 61 74 28 61 6c 69 73 74 29 3b 0a 20 20 66 6c 6f at(alist);. flo
3930: 61 74 20 72 3d 61 2b 62 2b 63 2b 64 2b 65 2b 66 at r=a+b+c+d+e+f
3940: 2b 67 2b 68 3b 0a 20 20 66 70 72 69 6e 74 66 28 +g+h;. fprintf(
3950: 6f 75 74 2c 22 66 6c 6f 61 74 20 66 28 38 2a 66 out,"float f(8*f
3960: 6c 6f 61 74 29 3a 28 25 67 2c 25 67 2c 25 67 2c loat):(%g,%g,%g,
3970: 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 29 22 %g,%g,%g,%g,%g)"
3980: 2c 61 2c 62 2c 63 2c 64 2c 65 2c 66 2c 67 2c 68 ,a,b,c,d,e,f,g,h
3990: 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 74 29 );. fflush(out)
39a0: 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e 5f 66 6c ;. va_return_fl
39b0: 6f 61 74 28 61 6c 69 73 74 2c 20 72 29 3b 0a 7d oat(alist, r);.}
39c0: 7d 0a 76 6f 69 64 20 66 5f 66 31 36 5f 73 69 6d }.void f_f16_sim
39d0: 75 6c 61 74 6f 72 20 28 76 6f 69 64 2a 20 64 61 ulator (void* da
39e0: 74 61 2c 20 76 61 5f 61 6c 69 73 74 20 61 6c 69 ta, va_alist ali
39f0: 73 74 29 0a 7b 0a 20 20 69 66 20 28 64 61 74 61 st).{. if (data
3a00: 20 21 3d 20 28 76 6f 69 64 2a 29 26 66 5f 66 31 != (void*)&f_f1
3a10: 36 29 20 7b 20 66 70 72 69 6e 74 66 28 6f 75 74 6) { fprintf(out
3a20: 2c 22 77 72 6f 6e 67 20 64 61 74 61 20 66 6f 72 ,"wrong data for
3a30: 20 66 5f 66 31 36 5c 6e 22 29 3b 20 65 78 69 74 f_f16\n"); exit
3a40: 28 31 29 3b 20 7d 0a 20 20 76 61 5f 73 74 61 72 (1); }. va_star
3a50: 74 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b 0a t_float(alist);.
3a60: 20 7b 66 6c 6f 61 74 20 61 20 3d 20 76 61 5f 61 {float a = va_a
3a70: 72 67 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b rg_float(alist);
3a80: 0a 20 20 66 6c 6f 61 74 20 62 20 3d 20 76 61 5f . float b = va_
3a90: 61 72 67 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29 arg_float(alist)
3aa0: 3b 0a 20 20 66 6c 6f 61 74 20 63 20 3d 20 76 61 ;. float c = va
3ab0: 5f 61 72 67 5f 66 6c 6f 61 74 28 61 6c 69 73 74 _arg_float(alist
3ac0: 29 3b 0a 20 20 66 6c 6f 61 74 20 64 20 3d 20 76 );. float d = v
3ad0: 61 5f 61 72 67 5f 66 6c 6f 61 74 28 61 6c 69 73 a_arg_float(alis
3ae0: 74 29 3b 0a 20 20 66 6c 6f 61 74 20 65 20 3d 20 t);. float e =
3af0: 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 61 6c 69 va_arg_float(ali
3b00: 73 74 29 3b 0a 20 20 66 6c 6f 61 74 20 66 20 3d st);. float f =
3b10: 20 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 61 6c va_arg_float(al
3b20: 69 73 74 29 3b 0a 20 20 66 6c 6f 61 74 20 67 20 ist);. float g
3b30: 3d 20 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 61 = va_arg_float(a
3b40: 6c 69 73 74 29 3b 0a 20 20 66 6c 6f 61 74 20 68 list);. float h
3b50: 20 3d 20 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 = va_arg_float(
3b60: 61 6c 69 73 74 29 3b 0a 20 20 66 6c 6f 61 74 20 alist);. float
3b70: 69 20 3d 20 76 61 5f 61 72 67 5f 66 6c 6f 61 74 i = va_arg_float
3b80: 28 61 6c 69 73 74 29 3b 0a 20 20 66 6c 6f 61 74 (alist);. float
3b90: 20 6a 20 3d 20 76 61 5f 61 72 67 5f 66 6c 6f 61 j = va_arg_floa
3ba0: 74 28 61 6c 69 73 74 29 3b 0a 20 20 66 6c 6f 61 t(alist);. floa
3bb0: 74 20 6b 20 3d 20 76 61 5f 61 72 67 5f 66 6c 6f t k = va_arg_flo
3bc0: 61 74 28 61 6c 69 73 74 29 3b 0a 20 20 66 6c 6f at(alist);. flo
3bd0: 61 74 20 6c 20 3d 20 76 61 5f 61 72 67 5f 66 6c at l = va_arg_fl
3be0: 6f 61 74 28 61 6c 69 73 74 29 3b 0a 20 20 66 6c oat(alist);. fl
3bf0: 6f 61 74 20 6d 20 3d 20 76 61 5f 61 72 67 5f 66 oat m = va_arg_f
3c00: 6c 6f 61 74 28 61 6c 69 73 74 29 3b 0a 20 20 66 loat(alist);. f
3c10: 6c 6f 61 74 20 6e 20 3d 20 76 61 5f 61 72 67 5f loat n = va_arg_
3c20: 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b 0a 20 20 float(alist);.
3c30: 66 6c 6f 61 74 20 6f 20 3d 20 76 61 5f 61 72 67 float o = va_arg
3c40: 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b 0a 20 _float(alist);.
3c50: 20 66 6c 6f 61 74 20 70 20 3d 20 76 61 5f 61 72 float p = va_ar
3c60: 67 5f 66 6c 6f 61 74 28 61 6c 69 73 74 29 3b 0a g_float(alist);.
3c70: 20 20 66 6c 6f 61 74 20 72 3d 61 2b 62 2b 63 2b float r=a+b+c+
3c80: 64 2b 65 2b 66 2b 67 2b 68 2b 69 2b 6a 2b 6b 2b d+e+f+g+h+i+j+k+
3c90: 6c 2b 6d 2b 6e 2b 6f 2b 70 3b 0a 20 20 66 70 72 l+m+n+o+p;. fpr
3ca0: 69 6e 74 66 28 6f 75 74 2c 22 66 6c 6f 61 74 20 intf(out,"float
3cb0: 66 28 31 36 2a 66 6c 6f 61 74 29 3a 28 25 67 2c f(16*float):(%g,
3cc0: 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 %g,%g,%g,%g,%g,%
3cd0: 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 g,%g,%g,%g,%g,%g
3ce0: 2c 25 67 2c 25 67 2c 25 67 2c 25 67 29 22 2c 61 ,%g,%g,%g,%g)",a
3cf0: 2c 62 2c 63 2c 64 2c 65 2c 66 2c 67 2c 68 2c 69 ,b,c,d,e,f,g,h,i
3d00: 2c 6a 2c 6b 2c 6c 2c 6d 2c 6e 2c 6f 2c 70 29 3b ,j,k,l,m,n,o,p);
3d10: 0a 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a . fflush(out);.
3d20: 20 20 76 61 5f 72 65 74 75 72 6e 5f 66 6c 6f 61 va_return_floa
3d30: 74 28 61 6c 69 73 74 2c 20 72 29 3b 0a 7d 7d 0a t(alist, r);.}}.
3d40: 0a 2f 2a 20 64 6f 75 62 6c 65 20 74 65 73 74 73 ./* double tests
3d50: 20 2a 2f 0a 76 6f 69 64 20 64 5f 64 5f 73 69 6d */.void d_d_sim
3d60: 75 6c 61 74 6f 72 20 28 76 6f 69 64 2a 20 64 61 ulator (void* da
3d70: 74 61 2c 20 76 61 5f 61 6c 69 73 74 20 61 6c 69 ta, va_alist ali
3d80: 73 74 29 0a 7b 0a 20 20 69 66 20 28 64 61 74 61 st).{. if (data
3d90: 20 21 3d 20 28 76 6f 69 64 2a 29 26 64 5f 64 29 != (void*)&d_d)
3da0: 20 7b 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 { fprintf(out,"
3db0: 77 72 6f 6e 67 20 64 61 74 61 20 66 6f 72 20 64 wrong data for d
3dc0: 5f 64 5c 6e 22 29 3b 20 65 78 69 74 28 31 29 3b _d\n"); exit(1);
3dd0: 20 7d 0a 20 20 76 61 5f 73 74 61 72 74 5f 64 6f }. va_start_do
3de0: 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a 20 7b 64 uble(alist);. {d
3df0: 6f 75 62 6c 65 20 61 20 3d 20 76 61 5f 61 72 67 ouble a = va_arg
3e00: 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a _double(alist);.
3e10: 20 20 64 6f 75 62 6c 65 20 72 3d 61 2b 31 2e 30 double r=a+1.0
3e20: 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c ;. fprintf(out,
3e30: 22 64 6f 75 62 6c 65 20 66 28 64 6f 75 62 6c 65 "double f(double
3e40: 29 3a 28 25 67 29 22 2c 61 29 3b 0a 20 20 66 66 ):(%g)",a);. ff
3e50: 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 76 61 5f lush(out);. va_
3e60: 72 65 74 75 72 6e 5f 64 6f 75 62 6c 65 28 61 6c return_double(al
3e70: 69 73 74 2c 20 72 29 3b 0a 7d 7d 0a 76 6f 69 64 ist, r);.}}.void
3e80: 20 64 5f 64 32 5f 73 69 6d 75 6c 61 74 6f 72 20 d_d2_simulator
3e90: 28 76 6f 69 64 2a 20 64 61 74 61 2c 20 76 61 5f (void* data, va_
3ea0: 61 6c 69 73 74 20 61 6c 69 73 74 29 0a 7b 0a 20 alist alist).{.
3eb0: 20 69 66 20 28 64 61 74 61 20 21 3d 20 28 76 6f if (data != (vo
3ec0: 69 64 2a 29 26 64 5f 64 32 29 20 7b 20 66 70 72 id*)&d_d2) { fpr
3ed0: 69 6e 74 66 28 6f 75 74 2c 22 77 72 6f 6e 67 20 intf(out,"wrong
3ee0: 64 61 74 61 20 66 6f 72 20 64 5f 64 32 5c 6e 22 data for d_d2\n"
3ef0: 29 3b 20 65 78 69 74 28 31 29 3b 20 7d 0a 20 20 ); exit(1); }.
3f00: 76 61 5f 73 74 61 72 74 5f 64 6f 75 62 6c 65 28 va_start_double(
3f10: 61 6c 69 73 74 29 3b 0a 20 7b 64 6f 75 62 6c 65 alist);. {double
3f20: 20 61 20 3d 20 76 61 5f 61 72 67 5f 64 6f 75 62 a = va_arg_doub
3f30: 6c 65 28 61 6c 69 73 74 29 3b 0a 20 20 64 6f 75 le(alist);. dou
3f40: 62 6c 65 20 62 20 3d 20 76 61 5f 61 72 67 5f 64 ble b = va_arg_d
3f50: 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a 20 20 ouble(alist);.
3f60: 64 6f 75 62 6c 65 20 72 3d 61 2b 62 3b 0a 20 20 double r=a+b;.
3f70: 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 64 6f 75 fprintf(out,"dou
3f80: 62 6c 65 20 66 28 32 2a 64 6f 75 62 6c 65 29 3a ble f(2*double):
3f90: 28 25 67 2c 25 67 29 22 2c 61 2c 62 29 3b 0a 20 (%g,%g)",a,b);.
3fa0: 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 fflush(out);.
3fb0: 76 61 5f 72 65 74 75 72 6e 5f 64 6f 75 62 6c 65 va_return_double
3fc0: 28 61 6c 69 73 74 2c 20 72 29 3b 0a 7d 7d 0a 76 (alist, r);.}}.v
3fd0: 6f 69 64 20 64 5f 64 34 5f 73 69 6d 75 6c 61 74 oid d_d4_simulat
3fe0: 6f 72 20 28 76 6f 69 64 2a 20 64 61 74 61 2c 20 or (void* data,
3ff0: 76 61 5f 61 6c 69 73 74 20 61 6c 69 73 74 29 0a va_alist alist).
4000: 7b 0a 20 20 69 66 20 28 64 61 74 61 20 21 3d 20 {. if (data !=
4010: 28 76 6f 69 64 2a 29 26 64 5f 64 34 29 20 7b 20 (void*)&d_d4) {
4020: 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 77 72 6f fprintf(out,"wro
4030: 6e 67 20 64 61 74 61 20 66 6f 72 20 64 5f 64 34 ng data for d_d4
4040: 5c 6e 22 29 3b 20 65 78 69 74 28 31 29 3b 20 7d \n"); exit(1); }
4050: 0a 20 20 76 61 5f 73 74 61 72 74 5f 64 6f 75 62 . va_start_doub
4060: 6c 65 28 61 6c 69 73 74 29 3b 0a 20 7b 64 6f 75 le(alist);. {dou
4070: 62 6c 65 20 61 20 3d 20 76 61 5f 61 72 67 5f 64 ble a = va_arg_d
4080: 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a 20 20 ouble(alist);.
4090: 64 6f 75 62 6c 65 20 62 20 3d 20 76 61 5f 61 72 double b = va_ar
40a0: 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b g_double(alist);
40b0: 0a 20 20 64 6f 75 62 6c 65 20 63 20 3d 20 76 61 . double c = va
40c0: 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73 _arg_double(alis
40d0: 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20 64 20 3d t);. double d =
40e0: 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61 va_arg_double(a
40f0: 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20 list);. double
4100: 72 3d 61 2b 62 2b 63 2b 64 3b 0a 20 20 66 70 72 r=a+b+c+d;. fpr
4110: 69 6e 74 66 28 6f 75 74 2c 22 64 6f 75 62 6c 65 intf(out,"double
4120: 20 66 28 34 2a 64 6f 75 62 6c 65 29 3a 28 25 67 f(4*double):(%g
4130: 2c 25 67 2c 25 67 2c 25 67 29 22 2c 61 2c 62 2c ,%g,%g,%g)",a,b,
4140: 63 2c 64 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f c,d);. fflush(o
4150: 75 74 29 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e ut);. va_return
4160: 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 2c 20 72 _double(alist, r
4170: 29 3b 0a 7d 7d 0a 76 6f 69 64 20 64 5f 64 38 5f );.}}.void d_d8_
4180: 73 69 6d 75 6c 61 74 6f 72 20 28 76 6f 69 64 2a simulator (void*
4190: 20 64 61 74 61 2c 20 76 61 5f 61 6c 69 73 74 20 data, va_alist
41a0: 61 6c 69 73 74 29 0a 7b 0a 20 20 69 66 20 28 64 alist).{. if (d
41b0: 61 74 61 20 21 3d 20 28 76 6f 69 64 2a 29 26 64 ata != (void*)&d
41c0: 5f 64 38 29 20 7b 20 66 70 72 69 6e 74 66 28 6f _d8) { fprintf(o
41d0: 75 74 2c 22 77 72 6f 6e 67 20 64 61 74 61 20 66 ut,"wrong data f
41e0: 6f 72 20 64 5f 64 38 5c 6e 22 29 3b 20 65 78 69 or d_d8\n"); exi
41f0: 74 28 31 29 3b 20 7d 0a 20 20 76 61 5f 73 74 61 t(1); }. va_sta
4200: 72 74 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 29 rt_double(alist)
4210: 3b 0a 20 7b 64 6f 75 62 6c 65 20 61 20 3d 20 76 ;. {double a = v
4220: 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c 69 a_arg_double(ali
4230: 73 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20 62 20 st);. double b
4240: 3d 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 = va_arg_double(
4250: 61 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62 6c 65 alist);. double
4260: 20 63 20 3d 20 76 61 5f 61 72 67 5f 64 6f 75 62 c = va_arg_doub
4270: 6c 65 28 61 6c 69 73 74 29 3b 0a 20 20 64 6f 75 le(alist);. dou
4280: 62 6c 65 20 64 20 3d 20 76 61 5f 61 72 67 5f 64 ble d = va_arg_d
4290: 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a 20 20 ouble(alist);.
42a0: 64 6f 75 62 6c 65 20 65 20 3d 20 76 61 5f 61 72 double e = va_ar
42b0: 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b g_double(alist);
42c0: 0a 20 20 64 6f 75 62 6c 65 20 66 20 3d 20 76 61 . double f = va
42d0: 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73 _arg_double(alis
42e0: 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20 67 20 3d t);. double g =
42f0: 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61 va_arg_double(a
4300: 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20 list);. double
4310: 68 20 3d 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c h = va_arg_doubl
4320: 65 28 61 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62 e(alist);. doub
4330: 6c 65 20 72 3d 61 2b 62 2b 63 2b 64 2b 65 2b 66 le r=a+b+c+d+e+f
4340: 2b 67 2b 68 3b 0a 20 20 66 70 72 69 6e 74 66 28 +g+h;. fprintf(
4350: 6f 75 74 2c 22 64 6f 75 62 6c 65 20 66 28 38 2a out,"double f(8*
4360: 64 6f 75 62 6c 65 29 3a 28 25 67 2c 25 67 2c 25 double):(%g,%g,%
4370: 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 g,%g,%g,%g,%g,%g
4380: 29 22 2c 61 2c 62 2c 63 2c 64 2c 65 2c 66 2c 67 )",a,b,c,d,e,f,g
4390: 2c 68 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 ,h);. fflush(ou
43a0: 74 29 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e 5f t);. va_return_
43b0: 64 6f 75 62 6c 65 28 61 6c 69 73 74 2c 20 72 29 double(alist, r)
43c0: 3b 0a 7d 7d 0a 76 6f 69 64 20 64 5f 64 31 36 5f ;.}}.void d_d16_
43d0: 73 69 6d 75 6c 61 74 6f 72 20 28 76 6f 69 64 2a simulator (void*
43e0: 20 64 61 74 61 2c 20 76 61 5f 61 6c 69 73 74 20 data, va_alist
43f0: 61 6c 69 73 74 29 0a 7b 0a 20 20 69 66 20 28 64 alist).{. if (d
4400: 61 74 61 20 21 3d 20 28 76 6f 69 64 2a 29 26 64 ata != (void*)&d
4410: 5f 64 31 36 29 20 7b 20 66 70 72 69 6e 74 66 28 _d16) { fprintf(
4420: 6f 75 74 2c 22 77 72 6f 6e 67 20 64 61 74 61 20 out,"wrong data
4430: 66 6f 72 20 64 5f 64 31 36 5c 6e 22 29 3b 20 65 for d_d16\n"); e
4440: 78 69 74 28 31 29 3b 20 7d 0a 20 20 76 61 5f 73 xit(1); }. va_s
4450: 74 61 72 74 5f 64 6f 75 62 6c 65 28 61 6c 69 73 tart_double(alis
4460: 74 29 3b 0a 20 7b 64 6f 75 62 6c 65 20 61 20 3d t);. {double a =
4470: 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61 va_arg_double(a
4480: 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20 list);. double
4490: 62 20 3d 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c b = va_arg_doubl
44a0: 65 28 61 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62 e(alist);. doub
44b0: 6c 65 20 63 20 3d 20 76 61 5f 61 72 67 5f 64 6f le c = va_arg_do
44c0: 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a 20 20 64 uble(alist);. d
44d0: 6f 75 62 6c 65 20 64 20 3d 20 76 61 5f 61 72 67 ouble d = va_arg
44e0: 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a _double(alist);.
44f0: 20 20 64 6f 75 62 6c 65 20 65 20 3d 20 76 61 5f double e = va_
4500: 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 arg_double(alist
4510: 29 3b 0a 20 20 64 6f 75 62 6c 65 20 66 20 3d 20 );. double f =
4520: 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c va_arg_double(al
4530: 69 73 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20 67 ist);. double g
4540: 20 3d 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 = va_arg_double
4550: 28 61 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62 6c (alist);. doubl
4560: 65 20 68 20 3d 20 76 61 5f 61 72 67 5f 64 6f 75 e h = va_arg_dou
4570: 62 6c 65 28 61 6c 69 73 74 29 3b 0a 20 20 64 6f ble(alist);. do
4580: 75 62 6c 65 20 69 20 3d 20 76 61 5f 61 72 67 5f uble i = va_arg_
4590: 64 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a 20 double(alist);.
45a0: 20 64 6f 75 62 6c 65 20 6a 20 3d 20 76 61 5f 61 double j = va_a
45b0: 72 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 29 rg_double(alist)
45c0: 3b 0a 20 20 64 6f 75 62 6c 65 20 6b 20 3d 20 76 ;. double k = v
45d0: 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c 69 a_arg_double(ali
45e0: 73 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20 6c 20 st);. double l
45f0: 3d 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 = va_arg_double(
4600: 61 6c 69 73 74 29 3b 0a 20 20 64 6f 75 62 6c 65 alist);. double
4610: 20 6d 20 3d 20 76 61 5f 61 72 67 5f 64 6f 75 62 m = va_arg_doub
4620: 6c 65 28 61 6c 69 73 74 29 3b 0a 20 20 64 6f 75 le(alist);. dou
4630: 62 6c 65 20 6e 20 3d 20 76 61 5f 61 72 67 5f 64 ble n = va_arg_d
4640: 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a 20 20 ouble(alist);.
4650: 64 6f 75 62 6c 65 20 6f 20 3d 20 76 61 5f 61 72 double o = va_ar
4660: 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b g_double(alist);
4670: 0a 20 20 64 6f 75 62 6c 65 20 70 20 3d 20 76 61 . double p = va
4680: 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73 _arg_double(alis
4690: 74 29 3b 0a 20 20 64 6f 75 62 6c 65 20 72 3d 61 t);. double r=a
46a0: 2b 62 2b 63 2b 64 2b 65 2b 66 2b 67 2b 68 2b 69 +b+c+d+e+f+g+h+i
46b0: 2b 6a 2b 6b 2b 6c 2b 6d 2b 6e 2b 6f 2b 70 3b 0a +j+k+l+m+n+o+p;.
46c0: 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 64 fprintf(out,"d
46d0: 6f 75 62 6c 65 20 66 28 31 36 2a 64 6f 75 62 6c ouble f(16*doubl
46e0: 65 29 3a 28 25 67 2c 25 67 2c 25 67 2c 25 67 2c e):(%g,%g,%g,%g,
46f0: 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 %g,%g,%g,%g,%g,%
4700: 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 2c 25 67 g,%g,%g,%g,%g,%g
4710: 2c 25 67 29 22 2c 61 2c 62 2c 63 2c 64 2c 65 2c ,%g)",a,b,c,d,e,
4720: 66 2c 67 2c 68 2c 69 2c 6a 2c 6b 2c 6c 2c 6d 2c f,g,h,i,j,k,l,m,
4730: 6e 2c 6f 2c 70 29 3b 0a 20 20 66 66 6c 75 73 68 n,o,p);. fflush
4740: 28 6f 75 74 29 3b 0a 20 20 76 61 5f 72 65 74 75 (out);. va_retu
4750: 72 6e 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 2c rn_double(alist,
4760: 20 72 29 3b 0a 7d 7d 0a 0a 2f 2a 20 70 6f 69 6e r);.}}../* poin
4770: 74 65 72 20 74 65 73 74 73 20 2a 2f 0a 76 6f 69 ter tests */.voi
4780: 64 20 76 70 5f 76 70 64 70 63 70 73 70 5f 73 69 d vp_vpdpcpsp_si
4790: 6d 75 6c 61 74 6f 72 20 28 76 6f 69 64 2a 20 64 mulator (void* d
47a0: 61 74 61 2c 20 76 61 5f 61 6c 69 73 74 20 61 6c ata, va_alist al
47b0: 69 73 74 29 0a 7b 0a 20 20 69 66 20 28 64 61 74 ist).{. if (dat
47c0: 61 20 21 3d 20 28 76 6f 69 64 2a 29 26 76 70 5f a != (void*)&vp_
47d0: 76 70 64 70 63 70 73 70 29 20 7b 20 66 70 72 69 vpdpcpsp) { fpri
47e0: 6e 74 66 28 6f 75 74 2c 22 77 72 6f 6e 67 20 64 ntf(out,"wrong d
47f0: 61 74 61 20 66 6f 72 20 76 70 5f 76 70 64 70 63 ata for vp_vpdpc
4800: 70 73 70 5c 6e 22 29 3b 20 65 78 69 74 28 31 29 psp\n"); exit(1)
4810: 3b 20 7d 0a 20 20 76 61 5f 73 74 61 72 74 5f 70 ; }. va_start_p
4820: 74 72 28 61 6c 69 73 74 2c 20 76 6f 69 64 2a 29 tr(alist, void*)
4830: 3b 0a 20 7b 76 6f 69 64 2a 20 61 20 3d 20 76 61 ;. {void* a = va
4840: 5f 61 72 67 5f 70 74 72 28 61 6c 69 73 74 2c 20 _arg_ptr(alist,
4850: 76 6f 69 64 2a 29 3b 0a 20 20 64 6f 75 62 6c 65 void*);. double
4860: 2a 20 62 20 3d 20 76 61 5f 61 72 67 5f 70 74 72 * b = va_arg_ptr
4870: 28 61 6c 69 73 74 2c 20 64 6f 75 62 6c 65 2a 29 (alist, double*)
4880: 3b 0a 20 20 63 68 61 72 2a 20 63 20 3d 20 76 61 ;. char* c = va
4890: 5f 61 72 67 5f 70 74 72 28 61 6c 69 73 74 2c 20 _arg_ptr(alist,
48a0: 63 68 61 72 2a 29 3b 0a 20 20 49 6e 74 2a 20 64 char*);. Int* d
48b0: 20 3d 20 76 61 5f 61 72 67 5f 70 74 72 28 61 6c = va_arg_ptr(al
48c0: 69 73 74 2c 20 49 6e 74 2a 29 3b 0a 20 20 76 6f ist, Int*);. vo
48d0: 69 64 2a 20 72 65 74 20 3d 20 28 63 68 61 72 2a id* ret = (char*
48e0: 29 62 20 2b 20 31 3b 0a 20 20 66 70 72 69 6e 74 )b + 1;. fprint
48f0: 66 28 6f 75 74 2c 22 76 6f 69 64 2a 20 66 28 76 f(out,"void* f(v
4900: 6f 69 64 2a 2c 64 6f 75 62 6c 65 2a 2c 63 68 61 oid*,double*,cha
4910: 72 2a 2c 49 6e 74 2a 29 3a 28 30 78 25 6c 78 2c r*,Int*):(0x%lx,
4920: 30 78 25 6c 78 2c 30 78 25 6c 78 2c 30 78 25 6c 0x%lx,0x%lx,0x%l
4930: 78 29 22 2c 28 6c 6f 6e 67 29 61 2c 28 6c 6f 6e x)",(long)a,(lon
4940: 67 29 62 2c 28 6c 6f 6e 67 29 63 2c 28 6c 6f 6e g)b,(long)c,(lon
4950: 67 29 64 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f g)d);. fflush(o
4960: 75 74 29 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e ut);. va_return
4970: 5f 70 74 72 28 61 6c 69 73 74 2c 20 76 6f 69 64 _ptr(alist, void
4980: 2a 2c 20 72 65 74 29 3b 0a 7d 7d 0a 0a 2f 2a 20 *, ret);.}}../*
4990: 6d 69 78 65 64 20 6e 75 6d 62 65 72 20 74 65 73 mixed number tes
49a0: 74 73 20 2a 2f 0a 76 6f 69 64 20 75 63 5f 75 63 ts */.void uc_uc
49b0: 73 69 6c 5f 73 69 6d 75 6c 61 74 6f 72 20 28 76 sil_simulator (v
49c0: 6f 69 64 2a 20 64 61 74 61 2c 20 76 61 5f 61 6c oid* data, va_al
49d0: 69 73 74 20 61 6c 69 73 74 29 0a 7b 0a 20 20 69 ist alist).{. i
49e0: 66 20 28 64 61 74 61 20 21 3d 20 28 76 6f 69 64 f (data != (void
49f0: 2a 29 26 75 63 5f 75 63 73 69 6c 29 20 7b 20 66 *)&uc_ucsil) { f
4a00: 70 72 69 6e 74 66 28 6f 75 74 2c 22 77 72 6f 6e printf(out,"wron
4a10: 67 20 64 61 74 61 20 66 6f 72 20 75 63 5f 75 63 g data for uc_uc
4a20: 73 69 6c 5c 6e 22 29 3b 20 65 78 69 74 28 31 29 sil\n"); exit(1)
4a30: 3b 20 7d 0a 20 20 76 61 5f 73 74 61 72 74 5f 75 ; }. va_start_u
4a40: 63 68 61 72 28 61 6c 69 73 74 29 3b 0a 20 7b 75 char(alist);. {u
4a50: 63 68 61 72 20 61 20 3d 20 76 61 5f 61 72 67 5f char a = va_arg_
4a60: 75 63 68 61 72 28 61 6c 69 73 74 29 3b 0a 20 20 uchar(alist);.
4a70: 75 73 68 6f 72 74 20 62 20 3d 20 76 61 5f 61 72 ushort b = va_ar
4a80: 67 5f 75 73 68 6f 72 74 28 61 6c 69 73 74 29 3b g_ushort(alist);
4a90: 0a 20 20 75 69 6e 74 20 63 20 3d 20 76 61 5f 61 . uint c = va_a
4aa0: 72 67 5f 75 69 6e 74 28 61 6c 69 73 74 29 3b 0a rg_uint(alist);.
4ab0: 20 20 75 6c 6f 6e 67 20 64 20 3d 20 76 61 5f 61 ulong d = va_a
4ac0: 72 67 5f 75 6c 6f 6e 67 28 61 6c 69 73 74 29 3b rg_ulong(alist);
4ad0: 0a 20 20 75 63 68 61 72 20 72 20 3d 20 28 75 63 . uchar r = (uc
4ae0: 68 61 72 29 2d 31 3b 0a 20 20 66 70 72 69 6e 74 har)-1;. fprint
4af0: 66 28 6f 75 74 2c 22 75 63 68 61 72 20 66 28 75 f(out,"uchar f(u
4b00: 63 68 61 72 2c 75 73 68 6f 72 74 2c 75 69 6e 74 char,ushort,uint
4b10: 2c 75 6c 6f 6e 67 29 3a 28 25 75 2c 25 75 2c 25 ,ulong):(%u,%u,%
4b20: 75 2c 25 6c 75 29 22 2c 61 2c 62 2c 63 2c 64 29 u,%lu)",a,b,c,d)
4b30: 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b ;. fflush(out);
4b40: 0a 20 20 76 61 5f 72 65 74 75 72 6e 5f 75 63 68 . va_return_uch
4b50: 61 72 28 61 6c 69 73 74 2c 20 72 29 3b 0a 7d 7d ar(alist, r);.}}
4b60: 0a 76 6f 69 64 20 64 5f 69 69 64 64 5f 73 69 6d .void d_iidd_sim
4b70: 75 6c 61 74 6f 72 20 28 76 6f 69 64 2a 20 64 61 ulator (void* da
4b80: 74 61 2c 20 76 61 5f 61 6c 69 73 74 20 61 6c 69 ta, va_alist ali
4b90: 73 74 29 0a 7b 0a 20 20 69 66 20 28 64 61 74 61 st).{. if (data
4ba0: 20 21 3d 20 28 76 6f 69 64 2a 29 26 64 5f 69 69 != (void*)&d_ii
4bb0: 64 64 29 20 7b 20 66 70 72 69 6e 74 66 28 6f 75 dd) { fprintf(ou
4bc0: 74 2c 22 77 72 6f 6e 67 20 64 61 74 61 20 66 6f t,"wrong data fo
4bd0: 72 20 64 5f 69 69 64 64 5c 6e 22 29 3b 20 65 78 r d_iidd\n"); ex
4be0: 69 74 28 31 29 3b 20 7d 0a 20 20 76 61 5f 73 74 it(1); }. va_st
4bf0: 61 72 74 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 art_double(alist
4c00: 29 3b 0a 20 7b 69 6e 74 20 61 20 3d 20 76 61 5f );. {int a = va_
4c10: 61 72 67 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a arg_int(alist);.
4c20: 20 20 69 6e 74 20 62 20 3d 20 76 61 5f 61 72 67 int b = va_arg
4c30: 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 20 64 _int(alist);. d
4c40: 6f 75 62 6c 65 20 63 20 3d 20 76 61 5f 61 72 67 ouble c = va_arg
4c50: 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a _double(alist);.
4c60: 20 20 64 6f 75 62 6c 65 20 64 20 3d 20 76 61 5f double d = va_
4c70: 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 arg_double(alist
4c80: 29 3b 0a 20 20 64 6f 75 62 6c 65 20 72 3d 61 2b );. double r=a+
4c90: 62 2b 63 2b 64 3b 0a 20 20 66 70 72 69 6e 74 66 b+c+d;. fprintf
4ca0: 28 6f 75 74 2c 22 64 6f 75 62 6c 65 20 66 28 69 (out,"double f(i
4cb0: 6e 74 2c 69 6e 74 2c 64 6f 75 62 6c 65 2c 64 6f nt,int,double,do
4cc0: 75 62 6c 65 29 3a 28 25 64 2c 25 64 2c 25 67 2c uble):(%d,%d,%g,
4cd0: 25 67 29 22 2c 61 2c 62 2c 63 2c 64 29 3b 0a 20 %g)",a,b,c,d);.
4ce0: 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 fflush(out);.
4cf0: 76 61 5f 72 65 74 75 72 6e 5f 64 6f 75 62 6c 65 va_return_double
4d00: 28 61 6c 69 73 74 2c 20 72 29 3b 0a 7d 7d 0a 76 (alist, r);.}}.v
4d10: 6f 69 64 20 64 5f 69 64 69 64 5f 73 69 6d 75 6c oid d_idid_simul
4d20: 61 74 6f 72 20 28 76 6f 69 64 2a 20 64 61 74 61 ator (void* data
4d30: 2c 20 76 61 5f 61 6c 69 73 74 20 61 6c 69 73 74 , va_alist alist
4d40: 29 0a 7b 0a 20 20 69 66 20 28 64 61 74 61 20 21 ).{. if (data !
4d50: 3d 20 28 76 6f 69 64 2a 29 26 64 5f 69 64 69 64 = (void*)&d_idid
4d60: 29 20 7b 20 66 70 72 69 6e 74 66 28 6f 75 74 2c ) { fprintf(out,
4d70: 22 77 72 6f 6e 67 20 64 61 74 61 20 66 6f 72 20 "wrong data for
4d80: 64 5f 69 64 69 64 5c 6e 22 29 3b 20 65 78 69 74 d_idid\n"); exit
4d90: 28 31 29 3b 20 7d 0a 20 20 76 61 5f 73 74 61 72 (1); }. va_star
4da0: 74 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b t_double(alist);
4db0: 0a 20 7b 69 6e 74 20 61 20 3d 20 76 61 5f 61 72 . {int a = va_ar
4dc0: 67 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 20 g_int(alist);.
4dd0: 64 6f 75 62 6c 65 20 62 20 3d 20 76 61 5f 61 72 double b = va_ar
4de0: 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b g_double(alist);
4df0: 0a 20 20 69 6e 74 20 63 20 3d 20 76 61 5f 61 72 . int c = va_ar
4e00: 67 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 20 g_int(alist);.
4e10: 64 6f 75 62 6c 65 20 64 20 3d 20 76 61 5f 61 72 double d = va_ar
4e20: 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73 74 29 3b g_double(alist);
4e30: 0a 20 20 64 6f 75 62 6c 65 20 72 3d 61 2b 62 2b . double r=a+b+
4e40: 63 2b 64 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f c+d;. fprintf(o
4e50: 75 74 2c 22 64 6f 75 62 6c 65 20 66 28 69 6e 74 ut,"double f(int
4e60: 2c 64 6f 75 62 6c 65 2c 69 6e 74 2c 64 6f 75 62 ,double,int,doub
4e70: 6c 65 29 3a 28 25 64 2c 25 67 2c 25 64 2c 25 67 le):(%d,%g,%d,%g
4e80: 29 22 2c 61 2c 62 2c 63 2c 64 29 3b 0a 20 20 66 )",a,b,c,d);. f
4e90: 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 76 61 flush(out);. va
4ea0: 5f 72 65 74 75 72 6e 5f 64 6f 75 62 6c 65 28 61 _return_double(a
4eb0: 6c 69 73 74 2c 20 72 29 3b 0a 7d 7d 0a 76 6f 69 list, r);.}}.voi
4ec0: 64 20 75 73 5f 63 64 63 64 5f 73 69 6d 75 6c 61 d us_cdcd_simula
4ed0: 74 6f 72 20 28 76 6f 69 64 2a 20 64 61 74 61 2c tor (void* data,
4ee0: 20 76 61 5f 61 6c 69 73 74 20 61 6c 69 73 74 29 va_alist alist)
4ef0: 0a 7b 0a 20 20 69 66 20 28 64 61 74 61 20 21 3d .{. if (data !=
4f00: 20 28 76 6f 69 64 2a 29 26 75 73 5f 63 64 63 64 (void*)&us_cdcd
4f10: 29 20 7b 20 66 70 72 69 6e 74 66 28 6f 75 74 2c ) { fprintf(out,
4f20: 22 77 72 6f 6e 67 20 64 61 74 61 20 66 6f 72 20 "wrong data for
4f30: 75 73 5f 63 64 63 64 5c 6e 22 29 3b 20 65 78 69 us_cdcd\n"); exi
4f40: 74 28 31 29 3b 20 7d 0a 20 20 76 61 5f 73 74 61 t(1); }. va_sta
4f50: 72 74 5f 75 73 68 6f 72 74 28 61 6c 69 73 74 29 rt_ushort(alist)
4f60: 3b 0a 20 7b 63 68 61 72 20 61 20 3d 20 76 61 5f ;. {char a = va_
4f70: 61 72 67 5f 63 68 61 72 28 61 6c 69 73 74 29 3b arg_char(alist);
4f80: 0a 20 20 64 6f 75 62 6c 65 20 62 20 3d 20 76 61 . double b = va
4f90: 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c 69 73 _arg_double(alis
4fa0: 74 29 3b 0a 20 20 63 68 61 72 20 63 20 3d 20 76 t);. char c = v
4fb0: 61 5f 61 72 67 5f 63 68 61 72 28 61 6c 69 73 74 a_arg_char(alist
4fc0: 29 3b 0a 20 20 64 6f 75 62 6c 65 20 64 20 3d 20 );. double d =
4fd0: 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c va_arg_double(al
4fe0: 69 73 74 29 3b 0a 20 20 75 73 68 6f 72 74 20 72 ist);. ushort r
4ff0: 20 3d 20 28 75 73 68 6f 72 74 29 28 61 20 2b 20 = (ushort)(a +
5000: 62 20 2b 20 63 20 2b 20 64 29 3b 0a 20 20 66 70 b + c + d);. fp
5010: 72 69 6e 74 66 28 6f 75 74 2c 22 75 73 68 6f 72 rintf(out,"ushor
5020: 74 20 66 28 63 68 61 72 2c 64 6f 75 62 6c 65 2c t f(char,double,
5030: 63 68 61 72 2c 64 6f 75 62 6c 65 29 3a 28 27 25 char,double):('%
5040: 63 27 2c 25 67 2c 27 25 63 27 2c 25 67 29 22 2c c',%g,'%c',%g)",
5050: 61 2c 62 2c 63 2c 64 29 3b 0a 20 20 66 66 6c 75 a,b,c,d);. fflu
5060: 73 68 28 6f 75 74 29 3b 0a 20 20 76 61 5f 72 65 sh(out);. va_re
5070: 74 75 72 6e 5f 75 73 68 6f 72 74 28 61 6c 69 73 turn_ushort(alis
5080: 74 2c 20 72 29 3b 0a 7d 7d 0a 23 69 66 64 65 66 t, r);.}}.#ifdef
5090: 20 48 41 56 45 5f 4c 4f 4e 47 5f 4c 4f 4e 47 0a HAVE_LONG_LONG.
50a0: 76 6f 69 64 20 6c 6c 5f 66 6c 6c 69 5f 73 69 6d void ll_flli_sim
50b0: 75 6c 61 74 6f 72 20 28 76 6f 69 64 2a 20 64 61 ulator (void* da
50c0: 74 61 2c 20 76 61 5f 61 6c 69 73 74 20 61 6c 69 ta, va_alist ali
50d0: 73 74 29 0a 7b 0a 20 20 69 66 20 28 64 61 74 61 st).{. if (data
50e0: 20 21 3d 20 28 76 6f 69 64 2a 29 26 6c 6c 5f 66 != (void*)&ll_f
50f0: 6c 6c 69 29 20 7b 20 66 70 72 69 6e 74 66 28 6f lli) { fprintf(o
5100: 75 74 2c 22 77 72 6f 6e 67 20 64 61 74 61 20 66 ut,"wrong data f
5110: 6f 72 20 6c 6c 5f 66 6c 6c 69 5c 6e 22 29 3b 20 or ll_flli\n");
5120: 65 78 69 74 28 31 29 3b 20 7d 0a 20 20 76 61 5f exit(1); }. va_
5130: 73 74 61 72 74 5f 6c 6f 6e 67 6c 6f 6e 67 28 61 start_longlong(a
5140: 6c 69 73 74 29 3b 0a 20 7b 66 6c 6f 61 74 20 61 list);. {float a
5150: 20 3d 20 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 = va_arg_float(
5160: 61 6c 69 73 74 29 3b 0a 20 20 6c 6f 6e 67 20 6c alist);. long l
5170: 6f 6e 67 20 62 20 3d 20 76 61 5f 61 72 67 5f 6c ong b = va_arg_l
5180: 6f 6e 67 6c 6f 6e 67 28 61 6c 69 73 74 29 3b 0a onglong(alist);.
5190: 20 20 69 6e 74 20 63 20 3d 20 76 61 5f 61 72 67 int c = va_arg
51a0: 5f 69 6e 74 28 61 6c 69 73 74 29 3b 0a 20 20 6c _int(alist);. l
51b0: 6f 6e 67 20 6c 6f 6e 67 20 72 20 3d 20 28 6c 6f ong long r = (lo
51c0: 6e 67 20 6c 6f 6e 67 29 28 69 6e 74 29 61 20 2b ng long)(int)a +
51d0: 20 62 20 2b 20 28 6c 6f 6e 67 20 6c 6f 6e 67 29 b + (long long)
51e0: 63 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 c;. fprintf(out
51f0: 2c 22 6c 6f 6e 67 20 6c 6f 6e 67 20 66 28 66 6c ,"long long f(fl
5200: 6f 61 74 2c 6c 6f 6e 67 20 6c 6f 6e 67 2c 69 6e oat,long long,in
5210: 74 29 3a 28 25 67 2c 30 78 25 6c 78 25 30 38 6c t):(%g,0x%lx%08l
5220: 78 2c 30 78 25 6c 78 29 22 2c 61 2c 28 6c 6f 6e x,0x%lx)",a,(lon
5230: 67 29 28 62 3e 3e 33 32 29 2c 28 6c 6f 6e 67 29 g)(b>>32),(long)
5240: 28 62 26 30 78 66 66 66 66 66 66 66 66 29 2c 28 (b&0xffffffff),(
5250: 6c 6f 6e 67 29 63 29 3b 0a 20 20 66 66 6c 75 73 long)c);. fflus
5260: 68 28 6f 75 74 29 3b 0a 20 20 76 61 5f 72 65 74 h(out);. va_ret
5270: 75 72 6e 5f 6c 6f 6e 67 6c 6f 6e 67 28 61 6c 69 urn_longlong(ali
5280: 73 74 2c 20 72 29 3b 0a 7d 7d 0a 23 65 6e 64 69 st, r);.}}.#endi
5290: 66 0a 0a 23 69 66 6e 64 65 66 20 53 4b 49 50 5f f..#ifndef SKIP_
52a0: 53 54 52 55 43 54 53 0a 2f 2a 20 73 74 72 75 63 STRUCTS./* struc
52b0: 74 75 72 65 20 74 65 73 74 73 20 2a 2f 0a 76 6f ture tests */.vo
52c0: 69 64 20 49 5f 49 49 49 5f 73 69 6d 75 6c 61 74 id I_III_simulat
52d0: 6f 72 20 28 76 6f 69 64 2a 20 64 61 74 61 2c 20 or (void* data,
52e0: 76 61 5f 61 6c 69 73 74 20 61 6c 69 73 74 29 0a va_alist alist).
52f0: 7b 0a 20 20 69 66 20 28 64 61 74 61 20 21 3d 20 {. if (data !=
5300: 28 76 6f 69 64 2a 29 26 49 5f 49 49 49 29 20 7b (void*)&I_III) {
5310: 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 77 72 fprintf(out,"wr
5320: 6f 6e 67 20 64 61 74 61 20 66 6f 72 20 49 5f 49 ong data for I_I
5330: 49 49 5c 6e 22 29 3b 20 65 78 69 74 28 31 29 3b II\n"); exit(1);
5340: 20 7d 0a 20 7b 49 6e 74 20 61 3b 0a 20 20 49 6e }. {Int a;. In
5350: 74 20 62 3b 0a 20 20 49 6e 74 20 63 3b 0a 20 20 t b;. Int c;.
5360: 49 6e 74 20 72 3b 0a 20 20 76 61 5f 73 74 61 72 Int r;. va_star
5370: 74 5f 73 74 72 75 63 74 28 61 6c 69 73 74 2c 20 t_struct(alist,
5380: 49 6e 74 2c 20 31 29 3b 0a 20 20 61 20 3d 20 76 Int, 1);. a = v
5390: 61 5f 61 72 67 5f 73 74 72 75 63 74 28 61 6c 69 a_arg_struct(ali
53a0: 73 74 2c 20 49 6e 74 29 3b 0a 20 20 62 20 3d 20 st, Int);. b =
53b0: 76 61 5f 61 72 67 5f 73 74 72 75 63 74 28 61 6c va_arg_struct(al
53c0: 69 73 74 2c 20 49 6e 74 29 3b 0a 20 20 63 20 3d ist, Int);. c =
53d0: 20 76 61 5f 61 72 67 5f 73 74 72 75 63 74 28 61 va_arg_struct(a
53e0: 6c 69 73 74 2c 20 49 6e 74 29 3b 0a 20 20 72 2e list, Int);. r.
53f0: 78 20 3d 20 61 2e 78 20 2b 20 62 2e 78 20 2b 20 x = a.x + b.x +
5400: 63 2e 78 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f c.x;. fprintf(o
5410: 75 74 2c 22 49 6e 74 20 66 28 49 6e 74 2c 49 6e ut,"Int f(Int,In
5420: 74 2c 49 6e 74 29 3a 28 7b 25 64 7d 2c 7b 25 64 t,Int):({%d},{%d
5430: 7d 2c 7b 25 64 7d 29 22 2c 61 2e 78 2c 62 2e 78 },{%d})",a.x,b.x
5440: 2c 63 2e 78 29 3b 0a 20 20 66 66 6c 75 73 68 28 ,c.x);. fflush(
5450: 6f 75 74 29 3b 0a 20 20 76 61 5f 72 65 74 75 72 out);. va_retur
5460: 6e 5f 73 74 72 75 63 74 28 61 6c 69 73 74 2c 20 n_struct(alist,
5470: 49 6e 74 2c 20 72 29 3b 0a 7d 7d 0a 23 69 66 6e Int, r);.}}.#ifn
5480: 64 65 66 20 53 4b 49 50 5f 45 58 54 52 41 5f 53 def SKIP_EXTRA_S
5490: 54 52 55 43 54 53 0a 76 6f 69 64 20 43 5f 43 64 TRUCTS.void C_Cd
54a0: 43 5f 73 69 6d 75 6c 61 74 6f 72 20 28 76 6f 69 C_simulator (voi
54b0: 64 2a 20 64 61 74 61 2c 20 76 61 5f 61 6c 69 73 d* data, va_alis
54c0: 74 20 61 6c 69 73 74 29 0a 7b 0a 20 20 69 66 20 t alist).{. if
54d0: 28 64 61 74 61 20 21 3d 20 28 76 6f 69 64 2a 29 (data != (void*)
54e0: 26 43 5f 43 64 43 29 20 7b 20 66 70 72 69 6e 74 &C_CdC) { fprint
54f0: 66 28 6f 75 74 2c 22 77 72 6f 6e 67 20 64 61 74 f(out,"wrong dat
5500: 61 20 66 6f 72 20 43 5f 43 64 43 5c 6e 22 29 3b a for C_CdC\n");
5510: 20 65 78 69 74 28 31 29 3b 20 7d 0a 20 7b 43 68 exit(1); }. {Ch
5520: 61 72 20 61 3b 0a 20 20 64 6f 75 62 6c 65 20 62 ar a;. double b
5530: 3b 0a 20 20 43 68 61 72 20 63 3b 0a 20 20 43 68 ;. Char c;. Ch
5540: 61 72 20 72 3b 0a 20 20 76 61 5f 73 74 61 72 74 ar r;. va_start
5550: 5f 73 74 72 75 63 74 28 61 6c 69 73 74 2c 20 43 _struct(alist, C
5560: 68 61 72 2c 20 31 29 3b 0a 20 20 61 20 3d 20 76 har, 1);. a = v
5570: 61 5f 61 72 67 5f 73 74 72 75 63 74 28 61 6c 69 a_arg_struct(ali
5580: 73 74 2c 20 43 68 61 72 29 3b 0a 20 20 62 20 3d st, Char);. b =
5590: 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61 va_arg_double(a
55a0: 6c 69 73 74 29 3b 0a 20 20 63 20 3d 20 76 61 5f list);. c = va_
55b0: 61 72 67 5f 73 74 72 75 63 74 28 61 6c 69 73 74 arg_struct(alist
55c0: 2c 20 43 68 61 72 29 3b 0a 20 20 72 2e 78 20 3d , Char);. r.x =
55d0: 20 28 61 2e 78 20 2b 20 63 2e 78 29 2f 32 3b 0a (a.x + c.x)/2;.
55e0: 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 43 fprintf(out,"C
55f0: 68 61 72 20 66 28 43 68 61 72 2c 64 6f 75 62 6c har f(Char,doubl
5600: 65 2c 43 68 61 72 29 3a 28 7b 27 25 63 27 7d 2c e,Char):({'%c'},
5610: 25 67 2c 7b 27 25 63 27 7d 29 22 2c 61 2e 78 2c %g,{'%c'})",a.x,
5620: 62 2c 63 2e 78 29 3b 0a 20 20 66 66 6c 75 73 68 b,c.x);. fflush
5630: 28 6f 75 74 29 3b 0a 20 20 76 61 5f 72 65 74 75 (out);. va_retu
5640: 72 6e 5f 73 74 72 75 63 74 28 61 6c 69 73 74 2c rn_struct(alist,
5650: 20 43 68 61 72 2c 20 72 29 3b 0a 7d 7d 0a 76 6f Char, r);.}}.vo
5660: 69 64 20 46 5f 46 66 64 5f 73 69 6d 75 6c 61 74 id F_Ffd_simulat
5670: 6f 72 20 28 76 6f 69 64 2a 20 64 61 74 61 2c 20 or (void* data,
5680: 76 61 5f 61 6c 69 73 74 20 61 6c 69 73 74 29 0a va_alist alist).
5690: 7b 0a 20 20 69 66 20 28 64 61 74 61 20 21 3d 20 {. if (data !=
56a0: 28 76 6f 69 64 2a 29 26 46 5f 46 66 64 29 20 7b (void*)&F_Ffd) {
56b0: 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 77 72 fprintf(out,"wr
56c0: 6f 6e 67 20 64 61 74 61 20 66 6f 72 20 46 5f 46 ong data for F_F
56d0: 66 64 5c 6e 22 29 3b 20 65 78 69 74 28 31 29 3b fd\n"); exit(1);
56e0: 20 7d 0a 20 7b 46 6c 6f 61 74 20 61 3b 0a 20 20 }. {Float a;.
56f0: 66 6c 6f 61 74 20 62 3b 0a 20 20 64 6f 75 62 6c float b;. doubl
5700: 65 20 63 3b 0a 20 20 46 6c 6f 61 74 20 72 3b 0a e c;. Float r;.
5710: 20 20 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63 va_start_struc
5720: 74 28 61 6c 69 73 74 2c 20 46 6c 6f 61 74 2c 20 t(alist, Float,
5730: 76 61 5f 77 6f 72 64 5f 73 70 6c 69 74 74 61 62 va_word_splittab
5740: 6c 65 5f 31 28 66 6c 6f 61 74 29 29 3b 0a 20 20 le_1(float));.
5750: 61 20 3d 20 76 61 5f 61 72 67 5f 73 74 72 75 63 a = va_arg_struc
5760: 74 28 61 6c 69 73 74 2c 20 46 6c 6f 61 74 29 3b t(alist, Float);
5770: 0a 20 20 62 20 3d 20 76 61 5f 61 72 67 5f 66 6c . b = va_arg_fl
5780: 6f 61 74 28 61 6c 69 73 74 29 3b 0a 20 20 63 20 oat(alist);. c
5790: 3d 20 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 = va_arg_double(
57a0: 61 6c 69 73 74 29 3b 0a 20 20 72 2e 78 20 3d 20 alist);. r.x =
57b0: 61 2e 78 20 2b 20 62 20 2b 20 63 3b 0a 20 20 66 a.x + b + c;. f
57c0: 70 72 69 6e 74 66 28 6f 75 74 2c 22 46 6c 6f 61 printf(out,"Floa
57d0: 74 20 66 28 46 6c 6f 61 74 2c 66 6c 6f 61 74 2c t f(Float,float,
57e0: 64 6f 75 62 6c 65 29 3a 28 7b 25 67 7d 2c 25 67 double):({%g},%g
57f0: 2c 25 67 29 22 2c 61 2e 78 2c 62 2c 63 29 3b 0a ,%g)",a.x,b,c);.
5800: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 fflush(out);.
5810: 20 76 61 5f 72 65 74 75 72 6e 5f 73 74 72 75 63 va_return_struc
5820: 74 28 61 6c 69 73 74 2c 20 46 6c 6f 61 74 2c 20 t(alist, Float,
5830: 72 29 3b 0a 7d 7d 0a 76 6f 69 64 20 44 5f 66 44 r);.}}.void D_fD
5840: 64 5f 73 69 6d 75 6c 61 74 6f 72 20 28 76 6f 69 d_simulator (voi
5850: 64 2a 20 64 61 74 61 2c 20 76 61 5f 61 6c 69 73 d* data, va_alis
5860: 74 20 61 6c 69 73 74 29 0a 7b 0a 20 20 69 66 20 t alist).{. if
5870: 28 64 61 74 61 20 21 3d 20 28 76 6f 69 64 2a 29 (data != (void*)
5880: 26 44 5f 66 44 64 29 20 7b 20 66 70 72 69 6e 74 &D_fDd) { fprint
5890: 66 28 6f 75 74 2c 22 77 72 6f 6e 67 20 64 61 74 f(out,"wrong dat
58a0: 61 20 66 6f 72 20 44 5f 66 44 64 5c 6e 22 29 3b a for D_fDd\n");
58b0: 20 65 78 69 74 28 31 29 3b 20 7d 0a 20 7b 66 6c exit(1); }. {fl
58c0: 6f 61 74 20 61 3b 0a 20 20 44 6f 75 62 6c 65 20 oat a;. Double
58d0: 62 3b 0a 20 20 64 6f 75 62 6c 65 20 63 3b 0a 20 b;. double c;.
58e0: 20 44 6f 75 62 6c 65 20 72 3b 0a 20 20 76 61 5f Double r;. va_
58f0: 73 74 61 72 74 5f 73 74 72 75 63 74 28 61 6c 69 start_struct(ali
5900: 73 74 2c 20 44 6f 75 62 6c 65 2c 20 76 61 5f 77 st, Double, va_w
5910: 6f 72 64 5f 73 70 6c 69 74 74 61 62 6c 65 5f 31 ord_splittable_1
5920: 28 64 6f 75 62 6c 65 29 29 3b 0a 20 20 61 20 3d (double));. a =
5930: 20 76 61 5f 61 72 67 5f 66 6c 6f 61 74 28 61 6c va_arg_float(al
5940: 69 73 74 29 3b 0a 20 20 62 20 3d 20 76 61 5f 61 ist);. b = va_a
5950: 72 67 5f 73 74 72 75 63 74 28 61 6c 69 73 74 2c rg_struct(alist,
5960: 20 44 6f 75 62 6c 65 29 3b 0a 20 20 63 20 3d 20 Double);. c =
5970: 76 61 5f 61 72 67 5f 64 6f 75 62 6c 65 28 61 6c va_arg_double(al
5980: 69 73 74 29 3b 0a 20 20 72 2e 78 20 3d 20 61 20 ist);. r.x = a
5990: 2b 20 62 2e 78 20 2b 20 63 3b 0a 20 20 66 70 72 + b.x + c;. fpr
59a0: 69 6e 74 66 28 6f 75 74 2c 22 44 6f 75 62 6c 65 intf(out,"Double
59b0: 20 66 28 66 6c 6f 61 74 2c 44 6f 75 62 6c 65 2c f(float,Double,
59c0: 64 6f 75 62 6c 65 29 3a 28 25 67 2c 7b 25 67 7d double):(%g,{%g}
59d0: 2c 25 67 29 22 2c 61 2c 62 2e 78 2c 63 29 3b 0a ,%g)",a,b.x,c);.
59e0: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 fflush(out);.
59f0: 20 76 61 5f 72 65 74 75 72 6e 5f 73 74 72 75 63 va_return_struc
5a00: 74 28 61 6c 69 73 74 2c 20 44 6f 75 62 6c 65 2c t(alist, Double,
5a10: 20 72 29 3b 0a 7d 7d 0a 23 65 6e 64 69 66 0a 76 r);.}}.#endif.v
5a20: 6f 69 64 20 4a 5f 4a 69 4a 5f 73 69 6d 75 6c 61 oid J_JiJ_simula
5a30: 74 6f 72 20 28 76 6f 69 64 2a 20 64 61 74 61 2c tor (void* data,
5a40: 20 76 61 5f 61 6c 69 73 74 20 61 6c 69 73 74 29 va_alist alist)
5a50: 0a 7b 0a 20 20 69 66 20 28 64 61 74 61 20 21 3d .{. if (data !=
5a60: 20 28 76 6f 69 64 2a 29 26 4a 5f 4a 69 4a 29 20 (void*)&J_JiJ)
5a70: 7b 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 77 { fprintf(out,"w
5a80: 72 6f 6e 67 20 64 61 74 61 20 66 6f 72 20 4a 5f rong data for J_
5a90: 4a 69 4a 5c 6e 22 29 3b 20 65 78 69 74 28 31 29 JiJ\n"); exit(1)
5aa0: 3b 20 7d 0a 20 7b 4a 20 61 3b 0a 20 20 69 6e 74 ; }. {J a;. int
5ab0: 20 62 3b 0a 20 20 4a 20 63 3b 0a 20 20 4a 20 72 b;. J c;. J r
5ac0: 3b 0a 20 20 76 61 5f 73 74 61 72 74 5f 73 74 72 ;. va_start_str
5ad0: 75 63 74 28 61 6c 69 73 74 2c 20 4a 2c 20 76 61 uct(alist, J, va
5ae0: 5f 77 6f 72 64 5f 73 70 6c 69 74 74 61 62 6c 65 _word_splittable
5af0: 5f 32 28 6c 6f 6e 67 2c 6c 6f 6e 67 29 29 3b 0a _2(long,long));.
5b00: 20 20 61 20 3d 20 76 61 5f 61 72 67 5f 73 74 72 a = va_arg_str
5b10: 75 63 74 28 61 6c 69 73 74 2c 20 4a 29 3b 0a 20 uct(alist, J);.
5b20: 20 62 20 3d 20 76 61 5f 61 72 67 5f 69 6e 74 28 b = va_arg_int(
5b30: 61 6c 69 73 74 29 3b 0a 20 20 63 20 3d 20 76 61 alist);. c = va
5b40: 5f 61 72 67 5f 73 74 72 75 63 74 28 61 6c 69 73 _arg_struct(alis
5b50: 74 2c 20 4a 29 3b 0a 20 20 72 2e 6c 31 20 3d 20 t, J);. r.l1 =
5b60: 61 2e 6c 31 2b 63 2e 6c 31 3b 20 72 2e 6c 32 20 a.l1+c.l1; r.l2
5b70: 3d 20 61 2e 6c 32 2b 62 2b 63 2e 6c 32 3b 0a 20 = a.l2+b+c.l2;.
5b80: 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 4a 20 fprintf(out,"J
5b90: 66 28 4a 2c 69 6e 74 2c 4a 29 3a 28 7b 25 6c 64 f(J,int,J):({%ld
5ba0: 2c 25 6c 64 7d 2c 25 64 2c 7b 25 6c 64 2c 25 6c ,%ld},%d,{%ld,%l
5bb0: 64 7d 29 22 2c 61 2e 6c 31 2c 61 2e 6c 32 2c 62 d})",a.l1,a.l2,b
5bc0: 2c 63 2e 6c 31 2c 63 2e 6c 32 29 3b 0a 20 20 66 ,c.l1,c.l2);. f
5bd0: 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 76 61 flush(out);. va
5be0: 5f 72 65 74 75 72 6e 5f 73 74 72 75 63 74 28 61 _return_struct(a
5bf0: 6c 69 73 74 2c 20 4a 2c 20 72 29 3b 0a 7d 7d 0a list, J, r);.}}.
5c00: 23 69 66 6e 64 65 66 20 53 4b 49 50 5f 45 58 54 #ifndef SKIP_EXT
5c10: 52 41 5f 53 54 52 55 43 54 53 0a 76 6f 69 64 20 RA_STRUCTS.void
5c20: 54 5f 54 63 54 5f 73 69 6d 75 6c 61 74 6f 72 20 T_TcT_simulator
5c30: 28 76 6f 69 64 2a 20 64 61 74 61 2c 20 76 61 5f (void* data, va_
5c40: 61 6c 69 73 74 20 61 6c 69 73 74 29 0a 7b 0a 20 alist alist).{.
5c50: 20 69 66 20 28 64 61 74 61 20 21 3d 20 28 76 6f if (data != (vo
5c60: 69 64 2a 29 26 54 5f 54 63 54 29 20 7b 20 66 70 id*)&T_TcT) { fp
5c70: 72 69 6e 74 66 28 6f 75 74 2c 22 77 72 6f 6e 67 rintf(out,"wrong
5c80: 20 64 61 74 61 20 66 6f 72 20 54 5f 54 63 54 5c data for T_TcT\
5c90: 6e 22 29 3b 20 65 78 69 74 28 31 29 3b 20 7d 0a n"); exit(1); }.
5ca0: 20 7b 54 20 61 3b 0a 20 20 63 68 61 72 20 62 3b {T a;. char b;
5cb0: 0a 20 20 54 20 63 3b 0a 20 20 54 20 72 3b 0a 20 . T c;. T r;.
5cc0: 20 76 61 5f 73 74 61 72 74 5f 73 74 72 75 63 74 va_start_struct
5cd0: 28 61 6c 69 73 74 2c 20 54 2c 20 31 29 3b 0a 20 (alist, T, 1);.
5ce0: 20 61 20 3d 20 76 61 5f 61 72 67 5f 73 74 72 75 a = va_arg_stru
5cf0: 63 74 28 61 6c 69 73 74 2c 20 54 29 3b 0a 20 20 ct(alist, T);.
5d00: 62 20 3d 20 76 61 5f 61 72 67 5f 63 68 61 72 28 b = va_arg_char(
5d10: 61 6c 69 73 74 29 3b 0a 20 20 63 20 3d 20 76 61 alist);. c = va
5d20: 5f 61 72 67 5f 73 74 72 75 63 74 28 61 6c 69 73 _arg_struct(alis
5d30: 74 2c 20 54 29 3b 0a 20 20 72 2e 63 5b 30 5d 3d t, T);. r.c[0]=
5d40: 27 62 27 3b 20 72 2e 63 5b 31 5d 3d 63 2e 63 5b 'b'; r.c[1]=c.c[
5d50: 31 5d 3b 20 72 2e 63 5b 32 5d 3d 63 2e 63 5b 32 1]; r.c[2]=c.c[2
5d60: 5d 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 ];. fprintf(out
5d70: 2c 22 54 20 66 28 54 2c 63 68 61 72 2c 54 29 3a ,"T f(T,char,T):
5d80: 28 7b 5c 22 25 63 25 63 25 63 5c 22 7d 2c 27 25 ({\"%c%c%c\"},'%
5d90: 63 27 2c 7b 5c 22 25 63 25 63 25 63 5c 22 7d 29 c',{\"%c%c%c\"})
5da0: 22 2c 61 2e 63 5b 30 5d 2c 61 2e 63 5b 31 5d 2c ",a.c[0],a.c[1],
5db0: 61 2e 63 5b 32 5d 2c 62 2c 63 2e 63 5b 30 5d 2c a.c[2],b,c.c[0],
5dc0: 63 2e 63 5b 31 5d 2c 63 2e 63 5b 32 5d 29 3b 0a c.c[1],c.c[2]);.
5dd0: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 fflush(out);.
5de0: 20 76 61 5f 72 65 74 75 72 6e 5f 73 74 72 75 63 va_return_struc
5df0: 74 28 61 6c 69 73 74 2c 20 54 2c 20 72 29 3b 0a t(alist, T, r);.
5e00: 7d 7d 0a 76 6f 69 64 20 58 5f 42 63 64 42 5f 73 }}.void X_BcdB_s
5e10: 69 6d 75 6c 61 74 6f 72 20 28 76 6f 69 64 2a 20 imulator (void*
5e20: 64 61 74 61 2c 20 76 61 5f 61 6c 69 73 74 20 61 data, va_alist a
5e30: 6c 69 73 74 29 0a 7b 0a 20 20 69 66 20 28 64 61 list).{. if (da
5e40: 74 61 20 21 3d 20 28 76 6f 69 64 2a 29 26 58 5f ta != (void*)&X_
5e50: 42 63 64 42 29 20 7b 20 66 70 72 69 6e 74 66 28 BcdB) { fprintf(
5e60: 6f 75 74 2c 22 77 72 6f 6e 67 20 64 61 74 61 20 out,"wrong data
5e70: 66 6f 72 20 58 5f 42 63 64 42 5c 6e 22 29 3b 20 for X_BcdB\n");
5e80: 65 78 69 74 28 31 29 3b 20 7d 0a 20 7b 42 20 61 exit(1); }. {B a
5e90: 3b 0a 20 20 63 68 61 72 20 62 3b 0a 20 20 64 6f ;. char b;. do
5ea0: 75 62 6c 65 20 63 3b 0a 20 20 42 20 64 3b 0a 20 uble c;. B d;.
5eb0: 20 73 74 61 74 69 63 20 58 20 78 72 3d 7b 22 72 static X xr={"r
5ec0: 65 74 75 72 6e 20 76 61 6c 22 2c 27 52 27 7d 3b eturn val",'R'};
5ed0: 0a 20 20 58 20 72 3b 0a 20 20 76 61 5f 73 74 61 . X r;. va_sta
5ee0: 72 74 5f 73 74 72 75 63 74 28 61 6c 69 73 74 2c rt_struct(alist,
5ef0: 20 58 2c 20 30 29 3b 0a 20 20 61 20 3d 20 76 61 X, 0);. a = va
5f00: 5f 61 72 67 5f 73 74 72 75 63 74 28 61 6c 69 73 _arg_struct(alis
5f10: 74 2c 20 42 29 3b 0a 20 20 62 20 3d 20 76 61 5f t, B);. b = va_
5f20: 61 72 67 5f 63 68 61 72 28 61 6c 69 73 74 29 3b arg_char(alist);
5f30: 0a 20 20 63 20 3d 20 76 61 5f 61 72 67 5f 64 6f . c = va_arg_do
5f40: 75 62 6c 65 28 61 6c 69 73 74 29 3b 0a 20 20 64 uble(alist);. d
5f50: 20 3d 20 76 61 5f 61 72 67 5f 73 74 72 75 63 74 = va_arg_struct
5f60: 28 61 6c 69 73 74 2c 20 42 29 3b 0a 20 20 72 20 (alist, B);. r
5f70: 3d 20 78 72 3b 0a 20 20 72 2e 63 31 20 3d 20 62 = xr;. r.c1 = b
5f80: 3b 0a 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c ;. fprintf(out,
5f90: 22 58 20 66 28 42 2c 63 68 61 72 2c 64 6f 75 62 "X f(B,char,doub
5fa0: 6c 65 2c 42 29 3a 28 7b 25 67 2c 7b 25 64 2c 25 le,B):({%g,{%d,%
5fb0: 64 2c 25 64 7d 7d 2c 27 25 63 27 2c 25 67 2c 7b d,%d}},'%c',%g,{
5fc0: 25 67 2c 7b 25 64 2c 25 64 2c 25 64 7d 7d 29 22 %g,{%d,%d,%d}})"
5fd0: 2c 0a 20 20 20 20 20 20 20 20 20 20 61 2e 64 2c ,. a.d,
5fe0: 61 2e 69 5b 30 5d 2c 61 2e 69 5b 31 5d 2c 61 2e a.i[0],a.i[1],a.
5ff0: 69 5b 32 5d 2c 62 2c 63 2c 64 2e 64 2c 64 2e 69 i[2],b,c,d.d,d.i
6000: 5b 30 5d 2c 64 2e 69 5b 31 5d 2c 64 2e 69 5b 32 [0],d.i[1],d.i[2
6010: 5d 29 3b 0a 20 20 66 66 6c 75 73 68 28 6f 75 74 ]);. fflush(out
6020: 29 3b 0a 20 20 76 61 5f 72 65 74 75 72 6e 5f 73 );. va_return_s
6030: 74 72 75 63 74 28 61 6c 69 73 74 2c 20 58 2c 20 truct(alist, X,
6040: 72 29 3b 0a 7d 7d 0a 23 65 6e 64 69 66 0a 23 65 r);.}}.#endif.#e
6050: 6e 64 69 66 0a 0a 2f 2a 0a 20 2a 20 54 68 65 20 ndif../*. * The
6060: 77 61 79 20 77 65 20 72 75 6e 20 74 68 65 73 65 way we run these
6070: 20 74 65 73 74 73 20 2d 20 66 69 72 73 74 20 63 tests - first c
6080: 61 6c 6c 20 74 68 65 20 66 75 6e 63 74 69 6f 6e all the function
6090: 20 64 69 72 65 63 74 6c 79 2c 20 74 68 65 6e 0a directly, then.
60a0: 20 2a 20 74 68 72 6f 75 67 68 20 76 61 63 61 6c * through vacal
60b0: 6c 28 29 20 2d 20 74 68 65 72 65 20 69 73 20 74 l() - there is t
60c0: 68 65 20 64 61 6e 67 65 72 20 74 68 61 74 20 61 he danger that a
60d0: 72 67 75 6d 65 6e 74 73 20 6f 72 20 72 65 73 75 rguments or resu
60e0: 6c 74 73 20 73 65 65 6d 0a 20 2a 20 74 6f 20 62 lts seem. * to b
60f0: 65 20 70 61 73 73 65 64 20 63 6f 72 72 65 63 74 e passed correct
6100: 6c 79 2c 20 62 75 74 20 77 68 61 74 20 77 65 20 ly, but what we
6110: 61 72 65 20 73 65 65 69 6e 67 20 61 72 65 20 69 are seeing are i
6120: 6e 20 66 61 63 74 20 74 68 65 20 76 65 73 74 69 n fact the vesti
6130: 67 65 73 0a 20 2a 20 28 74 72 61 63 65 73 29 20 ges. * (traces)
6140: 6f 72 20 74 68 65 20 70 72 65 76 69 6f 75 73 20 or the previous
6150: 63 61 6c 6c 2e 20 54 68 69 73 20 6d 61 79 20 73 call. This may s
6160: 65 72 69 6f 75 73 6c 79 20 66 61 6b 65 20 74 68 eriously fake th
6170: 65 20 74 65 73 74 2e 0a 20 2a 20 41 76 6f 69 64 e test.. * Avoid
6180: 20 74 68 69 73 20 62 79 20 63 6c 65 61 72 69 6e this by clearin
6190: 67 20 74 68 65 20 72 65 67 69 73 74 65 72 73 20 g the registers
61a0: 62 65 74 77 65 65 6e 20 74 68 65 20 66 69 72 73 between the firs
61b0: 74 20 61 6e 64 20 74 68 65 20 73 65 63 6f 6e 64 t and the second
61c0: 20 63 61 6c 6c 2e 0a 20 2a 2f 0a 6c 6f 6e 67 20 call.. */.long
61d0: 63 6c 65 61 72 5f 74 72 61 63 65 73 5f 69 20 28 clear_traces_i (
61e0: 6c 6f 6e 67 20 61 2c 20 6c 6f 6e 67 20 62 2c 20 long a, long b,
61f0: 6c 6f 6e 67 20 63 2c 20 6c 6f 6e 67 20 64 2c 20 long c, long d,
6200: 6c 6f 6e 67 20 65 2c 20 6c 6f 6e 67 20 66 2c 20 long e, long f,
6210: 6c 6f 6e 67 20 67 2c 20 6c 6f 6e 67 20 68 2c 0a long g, long h,.
6220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
6230: 20 20 20 20 20 6c 6f 6e 67 20 69 2c 20 6c 6f 6e long i, lon
6240: 67 20 6a 2c 20 6c 6f 6e 67 20 6b 2c 20 6c 6f 6e g j, long k, lon
6250: 67 20 6c 2c 20 6c 6f 6e 67 20 6d 2c 20 6c 6f 6e g l, long m, lon
6260: 67 20 6e 2c 20 6c 6f 6e 67 20 6f 2c 20 6c 6f 6e g n, long o, lon
6270: 67 20 70 29 0a 7b 20 72 65 74 75 72 6e 20 30 3b g p).{ return 0;
6280: 20 7d 0a 66 6c 6f 61 74 20 63 6c 65 61 72 5f 74 }.float clear_t
6290: 72 61 63 65 73 5f 66 20 28 66 6c 6f 61 74 20 61 races_f (float a
62a0: 2c 20 66 6c 6f 61 74 20 62 2c 20 66 6c 6f 61 74 , float b, float
62b0: 20 63 2c 20 66 6c 6f 61 74 20 64 2c 20 66 6c 6f c, float d, flo
62c0: 61 74 20 65 2c 20 66 6c 6f 61 74 20 66 2c 20 66 at e, float f, f
62d0: 6c 6f 61 74 20 67 2c 0a 20 20 20 20 20 20 20 20 loat g,.
62e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6c fl
62f0: 6f 61 74 20 68 2c 20 66 6c 6f 61 74 20 69 2c 20 oat h, float i,
6300: 66 6c 6f 61 74 20 6a 2c 20 66 6c 6f 61 74 20 6b float j, float k
6310: 2c 20 66 6c 6f 61 74 20 6c 2c 20 66 6c 6f 61 74 , float l, float
6320: 20 6d 2c 20 66 6c 6f 61 74 20 6e 2c 0a 20 20 20 m, float n,.
6330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
6340: 20 20 20 66 6c 6f 61 74 20 6f 2c 20 66 6c 6f 61 float o, floa
6350: 74 20 70 29 0a 7b 20 72 65 74 75 72 6e 20 30 2e t p).{ return 0.
6360: 30 3b 20 7d 0a 64 6f 75 62 6c 65 20 63 6c 65 61 0; }.double clea
6370: 72 5f 74 72 61 63 65 73 5f 64 20 28 64 6f 75 62 r_traces_d (doub
6380: 6c 65 20 61 2c 20 64 6f 75 62 6c 65 20 62 2c 20 le a, double b,
6390: 64 6f 75 62 6c 65 20 63 2c 20 64 6f 75 62 6c 65 double c, double
63a0: 20 64 2c 20 64 6f 75 62 6c 65 20 65 2c 20 64 6f d, double e, do
63b0: 75 62 6c 65 20 66 2c 20 64 6f 75 62 6c 65 20 67 uble f, double g
63c0: 2c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ,.
63d0: 20 20 20 20 20 20 20 20 20 64 6f 75 62 6c 65 20 double
63e0: 68 2c 20 64 6f 75 62 6c 65 20 69 2c 20 64 6f 75 h, double i, dou
63f0: 62 6c 65 20 6a 2c 20 64 6f 75 62 6c 65 20 6b 2c ble j, double k,
6400: 20 64 6f 75 62 6c 65 20 6c 2c 20 64 6f 75 62 6c double l, doubl
6410: 65 20 6d 2c 20 64 6f 75 62 6c 65 20 6e 2c 0a 20 e m, double n,.
6420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
6430: 20 20 20 20 20 20 64 6f 75 62 6c 65 20 6f 2c 20 double o,
6440: 64 6f 75 62 6c 65 20 70 29 0a 7b 20 72 65 74 75 double p).{ retu
6450: 72 6e 20 30 2e 30 3b 20 7d 0a 4a 20 63 6c 65 61 rn 0.0; }.J clea
6460: 72 5f 74 72 61 63 65 73 5f 4a 20 28 76 6f 69 64 r_traces_J (void
6470: 29 0a 7b 20 4a 20 6a 3b 20 6a 2e 6c 31 20 3d 20 ).{ J j; j.l1 =
6480: 6a 2e 6c 32 20 3d 20 30 3b 20 72 65 74 75 72 6e j.l2 = 0; return
6490: 20 6a 3b 20 7d 0a 76 6f 69 64 20 63 6c 65 61 72 j; }.void clear
64a0: 5f 74 72 61 63 65 73 20 28 76 6f 69 64 29 0a 7b _traces (void).{
64b0: 20 63 6c 65 61 72 5f 74 72 61 63 65 73 5f 69 28 clear_traces_i(
64c0: 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c 0,0,0,0,0,0,0,0,
64d0: 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 2c 30 29 0,0,0,0,0,0,0,0)
64e0: 3b 0a 20 20 63 6c 65 61 72 5f 74 72 61 63 65 73 ;. clear_traces
64f0: 5f 66 28 30 2e 30 2c 30 2e 30 2c 30 2e 30 2c 30 _f(0.0,0.0,0.0,0
6500: 2e 30 2c 30 2e 30 2c 30 2e 30 2c 30 2e 30 2c 30 .0,0.0,0.0,0.0,0
6510: 2e 30 2c 30 2e 30 2c 30 2e 30 2c 30 2e 30 2c 30 .0,0.0,0.0,0.0,0
6520: 2e 30 2c 30 2e 30 2c 30 2e 30 2c 30 2e 30 2c 30 .0,0.0,0.0,0.0,0
6530: 2e 30 29 3b 0a 20 20 63 6c 65 61 72 5f 74 72 61 .0);. clear_tra
6540: 63 65 73 5f 64 28 30 2e 30 2c 30 2e 30 2c 30 2e ces_d(0.0,0.0,0.
6550: 30 2c 30 2e 30 2c 30 2e 30 2c 30 2e 30 2c 30 2e 0,0.0,0.0,0.0,0.
6560: 30 2c 30 2e 30 2c 30 2e 30 2c 30 2e 30 2c 30 2e 0,0.0,0.0,0.0,0.
6570: 30 2c 30 2e 30 2c 30 2e 30 2c 30 2e 30 2c 30 2e 0,0.0,0.0,0.0,0.
6580: 30 2c 30 2e 30 29 3b 0a 20 20 63 6c 65 61 72 5f 0,0.0);. clear_
6590: 74 72 61 63 65 73 5f 4a 28 29 3b 0a 7d 0a 0a 69 traces_J();.}..i
65a0: 6e 74 20 6d 61 69 6e 20 28 76 6f 69 64 29 0a 7b nt main (void).{
65b0: 0a 20 20 5f 5f 54 52 5f 66 75 6e 63 74 69 6f 6e . __TR_function
65c0: 20 63 61 6c 6c 62 61 63 6b 3b 0a 0a 20 20 6f 75 callback;.. ou
65d0: 74 20 3d 20 73 74 64 6f 75 74 3b 0a 0a 20 20 2f t = stdout;.. /
65e0: 2a 20 76 6f 69 64 20 74 65 73 74 73 20 2a 2f 0a * void tests */.
65f0: 20 20 76 5f 76 28 29 3b 0a 20 20 63 6c 65 61 72 v_v();. clear
6600: 5f 74 72 61 63 65 73 28 29 3b 0a 20 20 63 61 6c _traces();. cal
6610: 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f 63 61 lback = alloc_ca
6620: 6c 6c 62 61 63 6b 28 26 76 5f 76 5f 73 69 6d 75 llback(&v_v_simu
6630: 6c 61 74 6f 72 2c 28 76 6f 69 64 2a 29 26 76 5f lator,(void*)&v_
6640: 76 29 3b 0a 20 20 28 28 76 6f 69 64 20 28 2a 29 v);. ((void (*)
6650: 20 28 76 6f 69 64 29 29 20 63 61 6c 6c 62 61 63 (void)) callbac
6660: 6b 29 20 28 29 3b 0a 0a 20 20 2f 2a 20 69 6e 74 k) ();.. /* int
6670: 20 74 65 73 74 73 20 2a 2f 0a 20 20 7b 20 69 6e tests */. { in
6680: 74 20 69 72 3b 0a 0a 20 20 20 20 69 72 20 3d 20 t ir;.. ir =
6690: 69 5f 76 28 29 3b 0a 20 20 20 20 66 70 72 69 6e i_v();. fprin
66a0: 74 66 28 6f 75 74 2c 22 2d 3e 25 64 5c 6e 22 2c tf(out,"->%d\n",
66b0: 69 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 ir);. fflush(
66c0: 6f 75 74 29 3b 0a 20 20 20 20 69 72 20 3d 20 30 out);. ir = 0
66d0: 3b 20 63 6c 65 61 72 5f 74 72 61 63 65 73 28 29 ; clear_traces()
66e0: 3b 0a 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 3d ;. callback =
66f0: 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61 63 6b 28 alloc_callback(
6700: 26 69 5f 76 5f 73 69 6d 75 6c 61 74 6f 72 2c 28 &i_v_simulator,(
6710: 76 6f 69 64 2a 29 26 69 5f 76 29 3b 0a 20 20 20 void*)&i_v);.
6720: 20 69 72 20 3d 20 28 28 69 6e 74 20 28 2a 29 20 ir = ((int (*)
6730: 28 76 6f 69 64 29 29 20 63 61 6c 6c 62 61 63 6b (void)) callback
6740: 29 20 28 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 ) ();. fprint
6750: 66 28 6f 75 74 2c 22 2d 3e 25 64 5c 6e 22 2c 69 f(out,"->%d\n",i
6760: 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f r);. fflush(o
6770: 75 74 29 3b 0a 0a 20 20 20 20 69 72 20 3d 20 69 ut);.. ir = i
6780: 5f 69 28 69 31 29 3b 0a 20 20 20 20 66 70 72 69 _i(i1);. fpri
6790: 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 64 5c 6e 22 ntf(out,"->%d\n"
67a0: 2c 69 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 ,ir);. fflush
67b0: 28 6f 75 74 29 3b 0a 20 20 20 20 69 72 20 3d 20 (out);. ir =
67c0: 30 3b 20 63 6c 65 61 72 5f 74 72 61 63 65 73 28 0; clear_traces(
67d0: 29 3b 0a 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 );. callback
67e0: 3d 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61 63 6b = alloc_callback
67f0: 28 26 69 5f 69 5f 73 69 6d 75 6c 61 74 6f 72 2c (&i_i_simulator,
6800: 28 76 6f 69 64 2a 29 26 69 5f 69 29 3b 0a 20 20 (void*)&i_i);.
6810: 20 20 69 72 20 3d 20 28 28 69 6e 74 20 28 2a 29 ir = ((int (*)
6820: 20 28 69 6e 74 29 29 20 63 61 6c 6c 62 61 63 6b (int)) callback
6830: 29 20 28 69 31 29 3b 0a 20 20 20 20 66 70 72 69 ) (i1);. fpri
6840: 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 64 5c 6e 22 ntf(out,"->%d\n"
6850: 2c 69 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 ,ir);. fflush
6860: 28 6f 75 74 29 3b 0a 0a 20 20 20 20 69 72 20 3d (out);.. ir =
6870: 20 69 5f 69 32 28 69 31 2c 69 32 29 3b 0a 20 20 i_i2(i1,i2);.
6880: 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d fprintf(out,"-
6890: 3e 25 64 5c 6e 22 2c 69 72 29 3b 0a 20 20 20 20 >%d\n",ir);.
68a0: 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20 fflush(out);.
68b0: 20 69 72 20 3d 20 30 3b 20 63 6c 65 61 72 5f 74 ir = 0; clear_t
68c0: 72 61 63 65 73 28 29 3b 0a 20 20 20 20 63 61 6c races();. cal
68d0: 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f 63 61 lback = alloc_ca
68e0: 6c 6c 62 61 63 6b 28 26 69 5f 69 32 5f 73 69 6d llback(&i_i2_sim
68f0: 75 6c 61 74 6f 72 2c 28 76 6f 69 64 2a 29 26 69 ulator,(void*)&i
6900: 5f 69 32 29 3b 0a 20 20 20 20 69 72 20 3d 20 28 _i2);. ir = (
6910: 28 69 6e 74 20 28 2a 29 20 28 69 6e 74 2c 69 6e (int (*) (int,in
6920: 74 29 29 20 63 61 6c 6c 62 61 63 6b 29 20 28 69 t)) callback) (i
6930: 31 2c 69 32 29 3b 0a 20 20 20 20 66 70 72 69 6e 1,i2);. fprin
6940: 74 66 28 6f 75 74 2c 22 2d 3e 25 64 5c 6e 22 2c tf(out,"->%d\n",
6950: 69 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 ir);. fflush(
6960: 6f 75 74 29 3b 0a 0a 20 20 20 20 69 72 20 3d 20 out);.. ir =
6970: 69 5f 69 34 28 69 31 2c 69 32 2c 69 33 2c 69 34 i_i4(i1,i2,i3,i4
6980: 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f );. fprintf(o
6990: 75 74 2c 22 2d 3e 25 64 5c 6e 22 2c 69 72 29 3b ut,"->%d\n",ir);
69a0: 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75 74 29 . fflush(out)
69b0: 3b 0a 20 20 20 20 69 72 20 3d 20 30 3b 20 63 6c ;. ir = 0; cl
69c0: 65 61 72 5f 74 72 61 63 65 73 28 29 3b 0a 20 20 ear_traces();.
69d0: 20 20 63 61 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c callback = all
69e0: 6f 63 5f 63 61 6c 6c 62 61 63 6b 28 26 69 5f 69 oc_callback(&i_i
69f0: 34 5f 73 69 6d 75 6c 61 74 6f 72 2c 28 76 6f 69 4_simulator,(voi
6a00: 64 2a 29 26 69 5f 69 34 29 3b 0a 20 20 20 20 69 d*)&i_i4);. i
6a10: 72 20 3d 20 28 28 69 6e 74 20 28 2a 29 20 28 69 r = ((int (*) (i
6a20: 6e 74 2c 69 6e 74 2c 69 6e 74 2c 69 6e 74 29 29 nt,int,int,int))
6a30: 20 63 61 6c 6c 62 61 63 6b 29 20 28 69 31 2c 69 callback) (i1,i
6a40: 32 2c 69 33 2c 69 34 29 3b 0a 20 20 20 20 66 70 2,i3,i4);. fp
6a50: 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 64 5c rintf(out,"->%d\
6a60: 6e 22 2c 69 72 29 3b 0a 20 20 20 20 66 66 6c 75 n",ir);. fflu
6a70: 73 68 28 6f 75 74 29 3b 0a 0a 20 20 20 20 69 72 sh(out);.. ir
6a80: 20 3d 20 69 5f 69 38 28 69 31 2c 69 32 2c 69 33 = i_i8(i1,i2,i3
6a90: 2c 69 34 2c 69 35 2c 69 36 2c 69 37 2c 69 38 29 ,i4,i5,i6,i7,i8)
6aa0: 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 ;. fprintf(ou
6ab0: 74 2c 22 2d 3e 25 64 5c 6e 22 2c 69 72 29 3b 0a t,"->%d\n",ir);.
6ac0: 20 20 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b fflush(out);
6ad0: 0a 20 20 20 20 69 72 20 3d 20 30 3b 20 63 6c 65 . ir = 0; cle
6ae0: 61 72 5f 74 72 61 63 65 73 28 29 3b 0a 20 20 20 ar_traces();.
6af0: 20 63 61 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f callback = allo
6b00: 63 5f 63 61 6c 6c 62 61 63 6b 28 26 69 5f 69 38 c_callback(&i_i8
6b10: 5f 73 69 6d 75 6c 61 74 6f 72 2c 28 76 6f 69 64 _simulator,(void
6b20: 2a 29 26 69 5f 69 38 29 3b 0a 20 20 20 20 69 72 *)&i_i8);. ir
6b30: 20 3d 20 28 28 69 6e 74 20 28 2a 29 20 28 69 6e = ((int (*) (in
6b40: 74 2c 69 6e 74 2c 69 6e 74 2c 69 6e 74 2c 69 6e t,int,int,int,in
6b50: 74 2c 69 6e 74 2c 69 6e 74 2c 69 6e 74 29 29 20 t,int,int,int))
6b60: 63 61 6c 6c 62 61 63 6b 29 20 28 69 31 2c 69 32 callback) (i1,i2
6b70: 2c 69 33 2c 69 34 2c 69 35 2c 69 36 2c 69 37 2c ,i3,i4,i5,i6,i7,
6b80: 69 38 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 i8);. fprintf
6b90: 28 6f 75 74 2c 22 2d 3e 25 64 5c 6e 22 2c 69 72 (out,"->%d\n",ir
6ba0: 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75 );. fflush(ou
6bb0: 74 29 3b 0a 0a 20 20 20 20 69 72 20 3d 20 69 5f t);.. ir = i_
6bc0: 69 31 36 28 69 31 2c 69 32 2c 69 33 2c 69 34 2c i16(i1,i2,i3,i4,
6bd0: 69 35 2c 69 36 2c 69 37 2c 69 38 2c 69 39 2c 69 i5,i6,i7,i8,i9,i
6be0: 31 30 2c 69 31 31 2c 69 31 32 2c 69 31 33 2c 69 10,i11,i12,i13,i
6bf0: 31 34 2c 69 31 35 2c 69 31 36 29 3b 0a 20 20 20 14,i15,i16);.
6c00: 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e fprintf(out,"->
6c10: 25 64 5c 6e 22 2c 69 72 29 3b 0a 20 20 20 20 66 %d\n",ir);. f
6c20: 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20 20 flush(out);.
6c30: 69 72 20 3d 20 30 3b 20 63 6c 65 61 72 5f 74 72 ir = 0; clear_tr
6c40: 61 63 65 73 28 29 3b 0a 20 20 20 20 63 61 6c 6c aces();. call
6c50: 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f 63 61 6c back = alloc_cal
6c60: 6c 62 61 63 6b 28 26 69 5f 69 31 36 5f 73 69 6d lback(&i_i16_sim
6c70: 75 6c 61 74 6f 72 2c 28 76 6f 69 64 2a 29 26 69 ulator,(void*)&i
6c80: 5f 69 31 36 29 3b 0a 20 20 20 20 69 72 20 3d 20 _i16);. ir =
6c90: 28 28 69 6e 74 20 28 2a 29 20 28 69 6e 74 2c 69 ((int (*) (int,i
6ca0: 6e 74 2c 69 6e 74 2c 69 6e 74 2c 69 6e 74 2c 69 nt,int,int,int,i
6cb0: 6e 74 2c 69 6e 74 2c 69 6e 74 2c 69 6e 74 2c 69 nt,int,int,int,i
6cc0: 6e 74 2c 69 6e 74 2c 69 6e 74 2c 69 6e 74 2c 69 nt,int,int,int,i
6cd0: 6e 74 2c 69 6e 74 2c 69 6e 74 29 29 20 63 61 6c nt,int,int)) cal
6ce0: 6c 62 61 63 6b 29 20 28 69 31 2c 69 32 2c 69 33 lback) (i1,i2,i3
6cf0: 2c 69 34 2c 69 35 2c 69 36 2c 69 37 2c 69 38 2c ,i4,i5,i6,i7,i8,
6d00: 69 39 2c 69 31 30 2c 69 31 31 2c 69 31 32 2c 69 i9,i10,i11,i12,i
6d10: 31 33 2c 69 31 34 2c 69 31 35 2c 69 31 36 29 3b 13,i14,i15,i16);
6d20: 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74 . fprintf(out
6d30: 2c 22 2d 3e 25 64 5c 6e 22 2c 69 72 29 3b 0a 20 ,"->%d\n",ir);.
6d40: 20 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a fflush(out);.
6d50: 20 20 7d 0a 0a 20 20 2f 2a 20 66 6c 6f 61 74 20 }.. /* float
6d60: 74 65 73 74 73 20 2a 2f 0a 20 20 7b 20 66 6c 6f tests */. { flo
6d70: 61 74 20 66 72 3b 0a 0a 20 20 20 20 66 72 20 3d at fr;.. fr =
6d80: 20 66 5f 66 28 66 31 29 3b 0a 20 20 20 20 66 70 f_f(f1);. fp
6d90: 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 67 5c rintf(out,"->%g\
6da0: 6e 22 2c 66 72 29 3b 0a 20 20 20 20 66 66 6c 75 n",fr);. fflu
6db0: 73 68 28 6f 75 74 29 3b 0a 20 20 20 20 66 72 20 sh(out);. fr
6dc0: 3d 20 30 2e 30 3b 20 63 6c 65 61 72 5f 74 72 61 = 0.0; clear_tra
6dd0: 63 65 73 28 29 3b 0a 20 20 20 20 63 61 6c 6c 62 ces();. callb
6de0: 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f 63 61 6c 6c ack = alloc_call
6df0: 62 61 63 6b 28 26 66 5f 66 5f 73 69 6d 75 6c 61 back(&f_f_simula
6e00: 74 6f 72 2c 28 76 6f 69 64 2a 29 26 66 5f 66 29 tor,(void*)&f_f)
6e10: 3b 0a 20 20 20 20 66 72 20 3d 20 28 28 66 6c 6f ;. fr = ((flo
6e20: 61 74 20 28 2a 29 20 28 66 6c 6f 61 74 29 29 20 at (*) (float))
6e30: 63 61 6c 6c 62 61 63 6b 29 20 28 66 31 29 3b 0a callback) (f1);.
6e40: 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c fprintf(out,
6e50: 22 2d 3e 25 67 5c 6e 22 2c 66 72 29 3b 0a 20 20 "->%g\n",fr);.
6e60: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 0a fflush(out);..
6e70: 20 20 20 20 66 72 20 3d 20 66 5f 66 32 28 66 31 fr = f_f2(f1
6e80: 2c 66 32 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 ,f2);. fprint
6e90: 66 28 6f 75 74 2c 22 2d 3e 25 67 5c 6e 22 2c 66 f(out,"->%g\n",f
6ea0: 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f r);. fflush(o
6eb0: 75 74 29 3b 0a 20 20 20 20 66 72 20 3d 20 30 2e ut);. fr = 0.
6ec0: 30 3b 20 63 6c 65 61 72 5f 74 72 61 63 65 73 28 0; clear_traces(
6ed0: 29 3b 0a 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 );. callback
6ee0: 3d 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61 63 6b = alloc_callback
6ef0: 28 26 66 5f 66 32 5f 73 69 6d 75 6c 61 74 6f 72 (&f_f2_simulator
6f00: 2c 28 76 6f 69 64 2a 29 26 66 5f 66 32 29 3b 0a ,(void*)&f_f2);.
6f10: 20 20 20 20 66 72 20 3d 20 28 28 66 6c 6f 61 74 fr = ((float
6f20: 20 28 2a 29 20 28 66 6c 6f 61 74 2c 66 6c 6f 61 (*) (float,floa
6f30: 74 29 29 20 63 61 6c 6c 62 61 63 6b 29 20 28 66 t)) callback) (f
6f40: 31 2c 66 32 29 3b 0a 20 20 20 20 66 70 72 69 6e 1,f2);. fprin
6f50: 74 66 28 6f 75 74 2c 22 2d 3e 25 67 5c 6e 22 2c tf(out,"->%g\n",
6f60: 66 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 fr);. fflush(
6f70: 6f 75 74 29 3b 0a 0a 20 20 20 20 66 72 20 3d 20 out);.. fr =
6f80: 66 5f 66 34 28 66 31 2c 66 32 2c 66 33 2c 66 34 f_f4(f1,f2,f3,f4
6f90: 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f );. fprintf(o
6fa0: 75 74 2c 22 2d 3e 25 67 5c 6e 22 2c 66 72 29 3b ut,"->%g\n",fr);
6fb0: 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75 74 29 . fflush(out)
6fc0: 3b 0a 20 20 20 20 66 72 20 3d 20 30 2e 30 3b 20 ;. fr = 0.0;
6fd0: 63 6c 65 61 72 5f 74 72 61 63 65 73 28 29 3b 0a clear_traces();.
6fe0: 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 3d 20 61 callback = a
6ff0: 6c 6c 6f 63 5f 63 61 6c 6c 62 61 63 6b 28 26 66 lloc_callback(&f
7000: 5f 66 34 5f 73 69 6d 75 6c 61 74 6f 72 2c 28 76 _f4_simulator,(v
7010: 6f 69 64 2a 29 26 66 5f 66 34 29 3b 0a 20 20 20 oid*)&f_f4);.
7020: 20 66 72 20 3d 20 28 28 66 6c 6f 61 74 20 28 2a fr = ((float (*
7030: 29 20 28 66 6c 6f 61 74 2c 66 6c 6f 61 74 2c 66 ) (float,float,f
7040: 6c 6f 61 74 2c 66 6c 6f 61 74 29 29 20 63 61 6c loat,float)) cal
7050: 6c 62 61 63 6b 29 20 28 66 31 2c 66 32 2c 66 33 lback) (f1,f2,f3
7060: 2c 66 34 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 ,f4);. fprint
7070: 66 28 6f 75 74 2c 22 2d 3e 25 67 5c 6e 22 2c 66 f(out,"->%g\n",f
7080: 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f r);. fflush(o
7090: 75 74 29 3b 0a 0a 20 20 20 20 66 72 20 3d 20 66 ut);.. fr = f
70a0: 5f 66 38 28 66 31 2c 66 32 2c 66 33 2c 66 34 2c _f8(f1,f2,f3,f4,
70b0: 66 35 2c 66 36 2c 66 37 2c 66 38 29 3b 0a 20 20 f5,f6,f7,f8);.
70c0: 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d fprintf(out,"-
70d0: 3e 25 67 5c 6e 22 2c 66 72 29 3b 0a 20 20 20 20 >%g\n",fr);.
70e0: 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20 fflush(out);.
70f0: 20 66 72 20 3d 20 30 2e 30 3b 20 63 6c 65 61 72 fr = 0.0; clear
7100: 5f 74 72 61 63 65 73 28 29 3b 0a 20 20 20 20 63 _traces();. c
7110: 61 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f allback = alloc_
7120: 63 61 6c 6c 62 61 63 6b 28 26 66 5f 66 38 5f 73 callback(&f_f8_s
7130: 69 6d 75 6c 61 74 6f 72 2c 28 76 6f 69 64 2a 29 imulator,(void*)
7140: 26 66 5f 66 38 29 3b 0a 20 20 20 20 66 72 20 3d &f_f8);. fr =
7150: 20 28 28 66 6c 6f 61 74 20 28 2a 29 20 28 66 6c ((float (*) (fl
7160: 6f 61 74 2c 66 6c 6f 61 74 2c 66 6c 6f 61 74 2c oat,float,float,
7170: 66 6c 6f 61 74 2c 66 6c 6f 61 74 2c 66 6c 6f 61 float,float,floa
7180: 74 2c 66 6c 6f 61 74 2c 66 6c 6f 61 74 29 29 20 t,float,float))
7190: 63 61 6c 6c 62 61 63 6b 29 20 28 66 31 2c 66 32 callback) (f1,f2
71a0: 2c 66 33 2c 66 34 2c 66 35 2c 66 36 2c 66 37 2c ,f3,f4,f5,f6,f7,
71b0: 66 38 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 f8);. fprintf
71c0: 28 6f 75 74 2c 22 2d 3e 25 67 5c 6e 22 2c 66 72 (out,"->%g\n",fr
71d0: 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75 );. fflush(ou
71e0: 74 29 3b 0a 0a 20 20 20 20 66 72 20 3d 20 66 5f t);.. fr = f_
71f0: 66 31 36 28 66 31 2c 66 32 2c 66 33 2c 66 34 2c f16(f1,f2,f3,f4,
7200: 66 35 2c 66 36 2c 66 37 2c 66 38 2c 66 39 2c 66 f5,f6,f7,f8,f9,f
7210: 31 30 2c 66 31 31 2c 66 31 32 2c 66 31 33 2c 66 10,f11,f12,f13,f
7220: 31 34 2c 66 31 35 2c 66 31 36 29 3b 0a 20 20 20 14,f15,f16);.
7230: 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e fprintf(out,"->
7240: 25 67 5c 6e 22 2c 66 72 29 3b 0a 20 20 20 20 66 %g\n",fr);. f
7250: 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20 20 flush(out);.
7260: 66 72 20 3d 20 30 2e 30 3b 20 63 6c 65 61 72 5f fr = 0.0; clear_
7270: 74 72 61 63 65 73 28 29 3b 0a 20 20 20 20 63 61 traces();. ca
7280: 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f 63 llback = alloc_c
7290: 61 6c 6c 62 61 63 6b 28 26 66 5f 66 31 36 5f 73 allback(&f_f16_s
72a0: 69 6d 75 6c 61 74 6f 72 2c 28 76 6f 69 64 2a 29 imulator,(void*)
72b0: 26 66 5f 66 31 36 29 3b 0a 20 20 20 20 66 72 20 &f_f16);. fr
72c0: 3d 20 28 28 66 6c 6f 61 74 20 28 2a 29 20 28 66 = ((float (*) (f
72d0: 6c 6f 61 74 2c 66 6c 6f 61 74 2c 66 6c 6f 61 74 loat,float,float
72e0: 2c 66 6c 6f 61 74 2c 66 6c 6f 61 74 2c 66 6c 6f ,float,float,flo
72f0: 61 74 2c 66 6c 6f 61 74 2c 66 6c 6f 61 74 2c 66 at,float,float,f
7300: 6c 6f 61 74 2c 66 6c 6f 61 74 2c 66 6c 6f 61 74 loat,float,float
7310: 2c 66 6c 6f 61 74 2c 66 6c 6f 61 74 2c 66 6c 6f ,float,float,flo
7320: 61 74 2c 66 6c 6f 61 74 2c 66 6c 6f 61 74 29 29 at,float,float))
7330: 20 63 61 6c 6c 62 61 63 6b 29 20 28 66 31 2c 66 callback) (f1,f
7340: 32 2c 66 33 2c 66 34 2c 66 35 2c 66 36 2c 66 37 2,f3,f4,f5,f6,f7
7350: 2c 66 38 2c 66 39 2c 66 31 30 2c 66 31 31 2c 66 ,f8,f9,f10,f11,f
7360: 31 32 2c 66 31 33 2c 66 31 34 2c 66 31 35 2c 66 12,f13,f14,f15,f
7370: 31 36 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 16);. fprintf
7380: 28 6f 75 74 2c 22 2d 3e 25 67 5c 6e 22 2c 66 72 (out,"->%g\n",fr
7390: 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75 );. fflush(ou
73a0: 74 29 3b 0a 20 20 7d 0a 0a 20 20 2f 2a 20 64 6f t);. }.. /* do
73b0: 75 62 6c 65 20 74 65 73 74 73 20 2a 2f 0a 20 20 uble tests */.
73c0: 7b 20 64 6f 75 62 6c 65 20 64 72 3b 0a 0a 20 20 { double dr;..
73d0: 20 20 64 72 20 3d 20 64 5f 64 28 64 31 29 3b 0a dr = d_d(d1);.
73e0: 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c fprintf(out,
73f0: 22 2d 3e 25 67 5c 6e 22 2c 64 72 29 3b 0a 20 20 "->%g\n",dr);.
7400: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 fflush(out);.
7410: 20 20 20 64 72 20 3d 20 30 2e 30 3b 20 63 6c 65 dr = 0.0; cle
7420: 61 72 5f 74 72 61 63 65 73 28 29 3b 0a 20 20 20 ar_traces();.
7430: 20 63 61 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f callback = allo
7440: 63 5f 63 61 6c 6c 62 61 63 6b 28 26 64 5f 64 5f c_callback(&d_d_
7450: 73 69 6d 75 6c 61 74 6f 72 2c 28 76 6f 69 64 2a simulator,(void*
7460: 29 26 64 5f 64 29 3b 0a 20 20 20 20 64 72 20 3d )&d_d);. dr =
7470: 20 28 28 64 6f 75 62 6c 65 20 28 2a 29 20 28 64 ((double (*) (d
7480: 6f 75 62 6c 65 29 29 20 63 61 6c 6c 62 61 63 6b ouble)) callback
7490: 29 20 28 64 31 29 3b 0a 20 20 20 20 66 70 72 69 ) (d1);. fpri
74a0: 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 67 5c 6e 22 ntf(out,"->%g\n"
74b0: 2c 64 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 ,dr);. fflush
74c0: 28 6f 75 74 29 3b 0a 0a 20 20 20 20 64 72 20 3d (out);.. dr =
74d0: 20 64 5f 64 32 28 64 31 2c 64 32 29 3b 0a 20 20 d_d2(d1,d2);.
74e0: 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d fprintf(out,"-
74f0: 3e 25 67 5c 6e 22 2c 64 72 29 3b 0a 20 20 20 20 >%g\n",dr);.
7500: 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20 fflush(out);.
7510: 20 64 72 20 3d 20 30 2e 30 3b 20 63 6c 65 61 72 dr = 0.0; clear
7520: 5f 74 72 61 63 65 73 28 29 3b 0a 20 20 20 20 63 _traces();. c
7530: 61 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f allback = alloc_
7540: 63 61 6c 6c 62 61 63 6b 28 26 64 5f 64 32 5f 73 callback(&d_d2_s
7550: 69 6d 75 6c 61 74 6f 72 2c 28 76 6f 69 64 2a 29 imulator,(void*)
7560: 26 64 5f 64 32 29 3b 0a 20 20 20 20 64 72 20 3d &d_d2);. dr =
7570: 20 28 28 64 6f 75 62 6c 65 20 28 2a 29 20 28 64 ((double (*) (d
7580: 6f 75 62 6c 65 2c 64 6f 75 62 6c 65 29 29 20 63 ouble,double)) c
7590: 61 6c 6c 62 61 63 6b 29 20 28 64 31 2c 64 32 29 allback) (d1,d2)
75a0: 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 ;. fprintf(ou
75b0: 74 2c 22 2d 3e 25 67 5c 6e 22 2c 64 72 29 3b 0a t,"->%g\n",dr);.
75c0: 20 20 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b fflush(out);
75d0: 0a 0a 20 20 20 20 64 72 20 3d 20 64 5f 64 34 28 .. dr = d_d4(
75e0: 64 31 2c 64 32 2c 64 33 2c 64 34 29 3b 0a 20 20 d1,d2,d3,d4);.
75f0: 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d fprintf(out,"-
7600: 3e 25 67 5c 6e 22 2c 64 72 29 3b 0a 20 20 20 20 >%g\n",dr);.
7610: 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20 fflush(out);.
7620: 20 64 72 20 3d 20 30 2e 30 3b 20 63 6c 65 61 72 dr = 0.0; clear
7630: 5f 74 72 61 63 65 73 28 29 3b 0a 20 20 20 20 63 _traces();. c
7640: 61 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f allback = alloc_
7650: 63 61 6c 6c 62 61 63 6b 28 26 64 5f 64 34 5f 73 callback(&d_d4_s
7660: 69 6d 75 6c 61 74 6f 72 2c 28 76 6f 69 64 2a 29 imulator,(void*)
7670: 26 64 5f 64 34 29 3b 0a 20 20 20 20 64 72 20 3d &d_d4);. dr =
7680: 20 28 28 64 6f 75 62 6c 65 20 28 2a 29 20 28 64 ((double (*) (d
7690: 6f 75 62 6c 65 2c 64 6f 75 62 6c 65 2c 64 6f 75 ouble,double,dou
76a0: 62 6c 65 2c 64 6f 75 62 6c 65 29 29 20 63 61 6c ble,double)) cal
76b0: 6c 62 61 63 6b 29 20 28 64 31 2c 64 32 2c 64 33 lback) (d1,d2,d3
76c0: 2c 64 34 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 ,d4);. fprint
76d0: 66 28 6f 75 74 2c 22 2d 3e 25 67 5c 6e 22 2c 64 f(out,"->%g\n",d
76e0: 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f r);. fflush(o
76f0: 75 74 29 3b 0a 0a 20 20 20 20 64 72 20 3d 20 64 ut);.. dr = d
7700: 5f 64 38 28 64 31 2c 64 32 2c 64 33 2c 64 34 2c _d8(d1,d2,d3,d4,
7710: 64 35 2c 64 36 2c 64 37 2c 64 38 29 3b 0a 20 20 d5,d6,d7,d8);.
7720: 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d fprintf(out,"-
7730: 3e 25 67 5c 6e 22 2c 64 72 29 3b 0a 20 20 20 20 >%g\n",dr);.
7740: 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20 fflush(out);.
7750: 20 64 72 20 3d 20 30 2e 30 3b 20 63 6c 65 61 72 dr = 0.0; clear
7760: 5f 74 72 61 63 65 73 28 29 3b 0a 20 20 20 20 63 _traces();. c
7770: 61 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f allback = alloc_
7780: 63 61 6c 6c 62 61 63 6b 28 26 64 5f 64 38 5f 73 callback(&d_d8_s
7790: 69 6d 75 6c 61 74 6f 72 2c 28 76 6f 69 64 2a 29 imulator,(void*)
77a0: 26 64 5f 64 38 29 3b 0a 20 20 20 20 64 72 20 3d &d_d8);. dr =
77b0: 20 28 28 64 6f 75 62 6c 65 20 28 2a 29 20 28 64 ((double (*) (d
77c0: 6f 75 62 6c 65 2c 64 6f 75 62 6c 65 2c 64 6f 75 ouble,double,dou
77d0: 62 6c 65 2c 64 6f 75 62 6c 65 2c 64 6f 75 62 6c ble,double,doubl
77e0: 65 2c 64 6f 75 62 6c 65 2c 64 6f 75 62 6c 65 2c e,double,double,
77f0: 64 6f 75 62 6c 65 29 29 20 63 61 6c 6c 62 61 63 double)) callbac
7800: 6b 29 20 28 64 31 2c 64 32 2c 64 33 2c 64 34 2c k) (d1,d2,d3,d4,
7810: 64 35 2c 64 36 2c 64 37 2c 64 38 29 3b 0a 20 20 d5,d6,d7,d8);.
7820: 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d fprintf(out,"-
7830: 3e 25 67 5c 6e 22 2c 64 72 29 3b 0a 20 20 20 20 >%g\n",dr);.
7840: 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 0a 20 20 fflush(out);..
7850: 20 20 64 72 20 3d 20 64 5f 64 31 36 28 64 31 2c dr = d_d16(d1,
7860: 64 32 2c 64 33 2c 64 34 2c 64 35 2c 64 36 2c 64 d2,d3,d4,d5,d6,d
7870: 37 2c 64 38 2c 64 39 2c 64 31 30 2c 64 31 31 2c 7,d8,d9,d10,d11,
7880: 64 31 32 2c 64 31 33 2c 64 31 34 2c 64 31 35 2c d12,d13,d14,d15,
7890: 64 31 36 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 d16);. fprint
78a0: 66 28 6f 75 74 2c 22 2d 3e 25 67 5c 6e 22 2c 64 f(out,"->%g\n",d
78b0: 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f r);. fflush(o
78c0: 75 74 29 3b 0a 20 20 20 20 64 72 20 3d 20 30 2e ut);. dr = 0.
78d0: 30 3b 20 63 6c 65 61 72 5f 74 72 61 63 65 73 28 0; clear_traces(
78e0: 29 3b 0a 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 );. callback
78f0: 3d 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61 63 6b = alloc_callback
7900: 28 26 64 5f 64 31 36 5f 73 69 6d 75 6c 61 74 6f (&d_d16_simulato
7910: 72 2c 28 76 6f 69 64 2a 29 26 64 5f 64 31 36 29 r,(void*)&d_d16)
7920: 3b 0a 20 20 20 20 64 72 20 3d 20 28 28 64 6f 75 ;. dr = ((dou
7930: 62 6c 65 20 28 2a 29 20 28 64 6f 75 62 6c 65 2c ble (*) (double,
7940: 64 6f 75 62 6c 65 2c 64 6f 75 62 6c 65 2c 64 6f double,double,do
7950: 75 62 6c 65 2c 64 6f 75 62 6c 65 2c 64 6f 75 62 uble,double,doub
7960: 6c 65 2c 64 6f 75 62 6c 65 2c 64 6f 75 62 6c 65 le,double,double
7970: 2c 64 6f 75 62 6c 65 2c 64 6f 75 62 6c 65 2c 64 ,double,double,d
7980: 6f 75 62 6c 65 2c 64 6f 75 62 6c 65 2c 64 6f 75 ouble,double,dou
7990: 62 6c 65 2c 64 6f 75 62 6c 65 2c 64 6f 75 62 6c ble,double,doubl
79a0: 65 2c 64 6f 75 62 6c 65 29 29 20 63 61 6c 6c 62 e,double)) callb
79b0: 61 63 6b 29 20 28 64 31 2c 64 32 2c 64 33 2c 64 ack) (d1,d2,d3,d
79c0: 34 2c 64 35 2c 64 36 2c 64 37 2c 64 38 2c 64 39 4,d5,d6,d7,d8,d9
79d0: 2c 64 31 30 2c 64 31 31 2c 64 31 32 2c 64 31 33 ,d10,d11,d12,d13
79e0: 2c 64 31 34 2c 64 31 35 2c 64 31 36 29 3b 0a 20 ,d14,d15,d16);.
79f0: 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 fprintf(out,"
7a00: 2d 3e 25 67 5c 6e 22 2c 64 72 29 3b 0a 20 20 20 ->%g\n",dr);.
7a10: 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 fflush(out);.
7a20: 7d 0a 0a 20 20 2f 2a 20 70 6f 69 6e 74 65 72 20 }.. /* pointer
7a30: 74 65 73 74 73 20 2a 2f 0a 20 20 7b 20 76 6f 69 tests */. { voi
7a40: 64 2a 20 76 70 72 3b 0a 0a 20 20 20 20 76 70 72 d* vpr;.. vpr
7a50: 20 3d 20 76 70 5f 76 70 64 70 63 70 73 70 28 26 = vp_vpdpcpsp(&
7a60: 75 63 31 2c 26 64 32 2c 73 74 72 33 2c 26 49 34 uc1,&d2,str3,&I4
7a70: 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f );. fprintf(o
7a80: 75 74 2c 22 2d 3e 30 78 25 6c 78 5c 6e 22 2c 28 ut,"->0x%lx\n",(
7a90: 6c 6f 6e 67 29 76 70 72 29 3b 0a 20 20 20 20 66 long)vpr);. f
7aa0: 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20 20 flush(out);.
7ab0: 76 70 72 20 3d 20 30 3b 20 63 6c 65 61 72 5f 74 vpr = 0; clear_t
7ac0: 72 61 63 65 73 28 29 3b 0a 20 20 20 20 63 61 6c races();. cal
7ad0: 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f 63 61 lback = alloc_ca
7ae0: 6c 6c 62 61 63 6b 28 26 76 70 5f 76 70 64 70 63 llback(&vp_vpdpc
7af0: 70 73 70 5f 73 69 6d 75 6c 61 74 6f 72 2c 28 76 psp_simulator,(v
7b00: 6f 69 64 2a 29 26 76 70 5f 76 70 64 70 63 70 73 oid*)&vp_vpdpcps
7b10: 70 29 3b 0a 20 20 20 20 76 70 72 20 3d 20 28 28 p);. vpr = ((
7b20: 76 6f 69 64 2a 20 28 2a 29 20 28 76 6f 69 64 2a void* (*) (void*
7b30: 2c 64 6f 75 62 6c 65 2a 2c 63 68 61 72 2a 2c 49 ,double*,char*,I
7b40: 6e 74 2a 29 29 20 63 61 6c 6c 62 61 63 6b 29 20 nt*)) callback)
7b50: 28 26 75 63 31 2c 26 64 32 2c 73 74 72 33 2c 26 (&uc1,&d2,str3,&
7b60: 49 34 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 I4);. fprintf
7b70: 28 6f 75 74 2c 22 2d 3e 30 78 25 6c 78 5c 6e 22 (out,"->0x%lx\n"
7b80: 2c 28 6c 6f 6e 67 29 76 70 72 29 3b 0a 20 20 20 ,(long)vpr);.
7b90: 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 fflush(out);.
7ba0: 7d 0a 0a 20 20 2f 2a 20 6d 69 78 65 64 20 6e 75 }.. /* mixed nu
7bb0: 6d 62 65 72 20 74 65 73 74 73 20 2a 2f 0a 20 20 mber tests */.
7bc0: 7b 20 75 63 68 61 72 20 75 63 72 3b 0a 20 20 20 { uchar ucr;.
7bd0: 20 75 73 68 6f 72 74 20 75 73 72 3b 0a 20 20 20 ushort usr;.
7be0: 20 64 6f 75 62 6c 65 20 64 72 3b 0a 23 69 66 64 double dr;.#ifd
7bf0: 65 66 20 48 41 56 45 5f 4c 4f 4e 47 5f 4c 4f 4e ef HAVE_LONG_LON
7c00: 47 0a 20 20 20 20 6c 6f 6e 67 20 6c 6f 6e 67 20 G. long long
7c10: 6c 6c 72 3b 0a 23 65 6e 64 69 66 0a 0a 20 20 20 llr;.#endif..
7c20: 20 75 63 72 20 3d 20 75 63 5f 75 63 73 69 6c 28 ucr = uc_ucsil(
7c30: 75 63 31 2c 75 73 32 2c 75 69 33 2c 75 6c 34 29 uc1,us2,ui3,ul4)
7c40: 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 ;. fprintf(ou
7c50: 74 2c 22 2d 3e 25 75 5c 6e 22 2c 75 63 72 29 3b t,"->%u\n",ucr);
7c60: 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75 74 29 . fflush(out)
7c70: 3b 0a 20 20 20 20 75 63 72 20 3d 20 30 3b 20 63 ;. ucr = 0; c
7c80: 6c 65 61 72 5f 74 72 61 63 65 73 28 29 3b 0a 20 lear_traces();.
7c90: 20 20 20 63 61 6c 6c 62 61 63 6b 20 3d 20 61 6c callback = al
7ca0: 6c 6f 63 5f 63 61 6c 6c 62 61 63 6b 28 26 75 63 loc_callback(&uc
7cb0: 5f 75 63 73 69 6c 5f 73 69 6d 75 6c 61 74 6f 72 _ucsil_simulator
7cc0: 2c 28 76 6f 69 64 2a 29 26 75 63 5f 75 63 73 69 ,(void*)&uc_ucsi
7cd0: 6c 29 3b 0a 20 20 20 20 75 63 72 20 3d 20 28 28 l);. ucr = ((
7ce0: 75 63 68 61 72 20 28 2a 29 20 28 75 63 68 61 72 uchar (*) (uchar
7cf0: 2c 75 73 68 6f 72 74 2c 75 69 6e 74 2c 75 6c 6f ,ushort,uint,ulo
7d00: 6e 67 29 29 20 63 61 6c 6c 62 61 63 6b 29 20 28 ng)) callback) (
7d10: 75 63 31 2c 75 73 32 2c 75 69 33 2c 75 6c 34 29 uc1,us2,ui3,ul4)
7d20: 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 ;. fprintf(ou
7d30: 74 2c 22 2d 3e 25 75 5c 6e 22 2c 75 63 72 29 3b t,"->%u\n",ucr);
7d40: 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75 74 29 . fflush(out)
7d50: 3b 0a 0a 20 20 20 20 64 72 20 3d 20 64 5f 69 69 ;.. dr = d_ii
7d60: 64 64 28 69 31 2c 69 32 2c 64 33 2c 64 34 29 3b dd(i1,i2,d3,d4);
7d70: 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74 . fprintf(out
7d80: 2c 22 2d 3e 25 67 5c 6e 22 2c 64 72 29 3b 0a 20 ,"->%g\n",dr);.
7d90: 20 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a fflush(out);.
7da0: 20 20 20 20 64 72 20 3d 20 30 2e 30 3b 20 63 6c dr = 0.0; cl
7db0: 65 61 72 5f 74 72 61 63 65 73 28 29 3b 0a 20 20 ear_traces();.
7dc0: 20 20 63 61 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c callback = all
7dd0: 6f 63 5f 63 61 6c 6c 62 61 63 6b 28 26 64 5f 69 oc_callback(&d_i
7de0: 69 64 64 5f 73 69 6d 75 6c 61 74 6f 72 2c 28 76 idd_simulator,(v
7df0: 6f 69 64 2a 29 26 64 5f 69 69 64 64 29 3b 0a 20 oid*)&d_iidd);.
7e00: 20 20 20 64 72 20 3d 20 28 28 64 6f 75 62 6c 65 dr = ((double
7e10: 20 28 2a 29 20 28 69 6e 74 2c 69 6e 74 2c 64 6f (*) (int,int,do
7e20: 75 62 6c 65 2c 64 6f 75 62 6c 65 29 29 20 63 61 uble,double)) ca
7e30: 6c 6c 62 61 63 6b 29 20 28 69 31 2c 69 32 2c 64 llback) (i1,i2,d
7e40: 33 2c 64 34 29 3b 0a 20 20 20 20 66 70 72 69 6e 3,d4);. fprin
7e50: 74 66 28 6f 75 74 2c 22 2d 3e 25 67 5c 6e 22 2c tf(out,"->%g\n",
7e60: 64 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 dr);. fflush(
7e70: 6f 75 74 29 3b 0a 0a 20 20 20 20 64 72 20 3d 20 out);.. dr =
7e80: 64 5f 69 64 69 64 28 69 31 2c 64 32 2c 69 33 2c d_idid(i1,d2,i3,
7e90: 64 34 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 d4);. fprintf
7ea0: 28 6f 75 74 2c 22 2d 3e 25 67 5c 6e 22 2c 64 72 (out,"->%g\n",dr
7eb0: 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75 );. fflush(ou
7ec0: 74 29 3b 0a 20 20 20 20 64 72 20 3d 20 30 2e 30 t);. dr = 0.0
7ed0: 3b 20 63 6c 65 61 72 5f 74 72 61 63 65 73 28 29 ; clear_traces()
7ee0: 3b 0a 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 3d ;. callback =
7ef0: 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61 63 6b 28 alloc_callback(
7f00: 26 64 5f 69 64 69 64 5f 73 69 6d 75 6c 61 74 6f &d_idid_simulato
7f10: 72 2c 28 76 6f 69 64 2a 29 26 64 5f 69 64 69 64 r,(void*)&d_idid
7f20: 29 3b 0a 20 20 20 20 64 72 20 3d 20 28 28 64 6f );. dr = ((do
7f30: 75 62 6c 65 20 28 2a 29 20 28 69 6e 74 2c 64 6f uble (*) (int,do
7f40: 75 62 6c 65 2c 69 6e 74 2c 64 6f 75 62 6c 65 29 uble,int,double)
7f50: 29 20 63 61 6c 6c 62 61 63 6b 29 20 28 69 31 2c ) callback) (i1,
7f60: 64 32 2c 69 33 2c 64 34 29 3b 0a 20 20 20 20 66 d2,i3,d4);. f
7f70: 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 67 printf(out,"->%g
7f80: 5c 6e 22 2c 64 72 29 3b 0a 20 20 20 20 66 66 6c \n",dr);. ffl
7f90: 75 73 68 28 6f 75 74 29 3b 0a 0a 20 20 20 20 75 ush(out);.. u
7fa0: 73 72 20 3d 20 75 73 5f 63 64 63 64 28 63 31 2c sr = us_cdcd(c1,
7fb0: 64 32 2c 63 33 2c 64 34 29 3b 0a 20 20 20 20 66 d2,c3,d4);. f
7fc0: 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 25 75 printf(out,"->%u
7fd0: 5c 6e 22 2c 75 73 72 29 3b 0a 20 20 20 20 66 66 \n",usr);. ff
7fe0: 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20 20 75 lush(out);. u
7ff0: 73 72 20 3d 20 30 3b 20 63 6c 65 61 72 5f 74 72 sr = 0; clear_tr
8000: 61 63 65 73 28 29 3b 0a 20 20 20 20 63 61 6c 6c aces();. call
8010: 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f 63 61 6c back = alloc_cal
8020: 6c 62 61 63 6b 28 26 75 73 5f 63 64 63 64 5f 73 lback(&us_cdcd_s
8030: 69 6d 75 6c 61 74 6f 72 2c 28 76 6f 69 64 2a 29 imulator,(void*)
8040: 26 75 73 5f 63 64 63 64 29 3b 0a 20 20 20 20 75 &us_cdcd);. u
8050: 73 72 20 3d 20 28 28 75 73 68 6f 72 74 20 28 2a sr = ((ushort (*
8060: 29 20 28 63 68 61 72 2c 64 6f 75 62 6c 65 2c 63 ) (char,double,c
8070: 68 61 72 2c 64 6f 75 62 6c 65 29 29 20 63 61 6c har,double)) cal
8080: 6c 62 61 63 6b 29 20 28 63 31 2c 64 32 2c 63 33 lback) (c1,d2,c3
8090: 2c 64 34 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 ,d4);. fprint
80a0: 66 28 6f 75 74 2c 22 2d 3e 25 75 5c 6e 22 2c 75 f(out,"->%u\n",u
80b0: 73 72 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 sr);. fflush(
80c0: 6f 75 74 29 3b 0a 0a 23 69 66 64 65 66 20 48 41 out);..#ifdef HA
80d0: 56 45 5f 4c 4f 4e 47 5f 4c 4f 4e 47 0a 20 20 20 VE_LONG_LONG.
80e0: 20 6c 6c 72 20 3d 20 6c 6c 5f 66 6c 6c 69 28 66 llr = ll_flli(f
80f0: 31 33 2c 6c 6c 31 2c 69 31 33 29 3b 0a 20 20 20 13,ll1,i13);.
8100: 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e fprintf(out,"->
8110: 30 78 25 6c 78 25 30 38 6c 78 5c 6e 22 2c 28 6c 0x%lx%08lx\n",(l
8120: 6f 6e 67 29 28 6c 6c 72 3e 3e 33 32 29 2c 28 6c ong)(llr>>32),(l
8130: 6f 6e 67 29 28 6c 6c 72 26 30 78 66 66 66 66 66 ong)(llr&0xfffff
8140: 66 66 66 29 29 3b 0a 20 20 20 20 66 66 6c 75 73 fff));. fflus
8150: 68 28 6f 75 74 29 3b 0a 20 20 20 20 6c 6c 72 20 h(out);. llr
8160: 3d 20 30 3b 20 63 6c 65 61 72 5f 74 72 61 63 65 = 0; clear_trace
8170: 73 28 29 3b 0a 20 20 20 20 63 61 6c 6c 62 61 63 s();. callbac
8180: 6b 20 3d 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61 k = alloc_callba
8190: 63 6b 28 26 6c 6c 5f 66 6c 6c 69 5f 73 69 6d 75 ck(&ll_flli_simu
81a0: 6c 61 74 6f 72 2c 28 76 6f 69 64 2a 29 26 6c 6c lator,(void*)&ll
81b0: 5f 66 6c 6c 69 29 3b 0a 20 20 20 20 6c 6c 72 20 _flli);. llr
81c0: 3d 20 28 28 6c 6f 6e 67 20 6c 6f 6e 67 20 28 2a = ((long long (*
81d0: 29 20 28 66 6c 6f 61 74 2c 6c 6f 6e 67 20 6c 6f ) (float,long lo
81e0: 6e 67 2c 69 6e 74 29 29 20 63 61 6c 6c 62 61 63 ng,int)) callbac
81f0: 6b 29 20 28 66 31 33 2c 6c 6c 31 2c 69 31 33 29 k) (f13,ll1,i13)
8200: 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 ;. fprintf(ou
8210: 74 2c 22 2d 3e 30 78 25 6c 78 25 30 38 6c 78 5c t,"->0x%lx%08lx\
8220: 6e 22 2c 28 6c 6f 6e 67 29 28 6c 6c 72 3e 3e 33 n",(long)(llr>>3
8230: 32 29 2c 28 6c 6f 6e 67 29 28 6c 6c 72 26 30 78 2),(long)(llr&0x
8240: 66 66 66 66 66 66 66 66 29 29 3b 0a 20 20 20 20 ffffffff));.
8250: 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 23 65 6e fflush(out);.#en
8260: 64 69 66 0a 20 20 7d 0a 0a 23 69 66 6e 64 65 66 dif. }..#ifndef
8270: 20 53 4b 49 50 5f 53 54 52 55 43 54 53 0a 20 20 SKIP_STRUCTS.
8280: 2f 2a 20 73 74 72 75 63 74 75 72 65 20 74 65 73 /* structure tes
8290: 74 73 20 2a 2f 0a 20 20 7b 20 49 6e 74 20 49 72 ts */. { Int Ir
82a0: 3b 0a 20 20 20 20 43 68 61 72 20 43 72 3b 0a 20 ;. Char Cr;.
82b0: 20 20 20 46 6c 6f 61 74 20 46 72 3b 0a 20 20 20 Float Fr;.
82c0: 20 44 6f 75 62 6c 65 20 44 72 3b 0a 20 20 20 20 Double Dr;.
82d0: 4a 20 4a 72 3b 0a 20 20 20 20 54 20 54 72 3b 0a J Jr;. T Tr;.
82e0: 20 20 20 20 58 20 58 72 3b 0a 0a 20 20 20 20 49 X Xr;.. I
82f0: 72 20 3d 20 49 5f 49 49 49 28 49 31 2c 49 32 2c r = I_III(I1,I2,
8300: 49 33 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 I3);. fprintf
8310: 28 6f 75 74 2c 22 2d 3e 7b 25 64 7d 5c 6e 22 2c (out,"->{%d}\n",
8320: 49 72 2e 78 29 3b 0a 20 20 20 20 66 66 6c 75 73 Ir.x);. fflus
8330: 68 28 6f 75 74 29 3b 0a 20 20 20 20 49 72 2e 78 h(out);. Ir.x
8340: 20 3d 20 30 3b 20 63 6c 65 61 72 5f 74 72 61 63 = 0; clear_trac
8350: 65 73 28 29 3b 0a 20 20 20 20 63 61 6c 6c 62 61 es();. callba
8360: 63 6b 20 3d 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 ck = alloc_callb
8370: 61 63 6b 28 26 49 5f 49 49 49 5f 73 69 6d 75 6c ack(&I_III_simul
8380: 61 74 6f 72 2c 28 76 6f 69 64 2a 29 26 49 5f 49 ator,(void*)&I_I
8390: 49 49 29 3b 0a 20 20 20 20 49 72 20 3d 20 28 28 II);. Ir = ((
83a0: 49 6e 74 20 28 2a 29 20 28 49 6e 74 2c 49 6e 74 Int (*) (Int,Int
83b0: 2c 49 6e 74 29 29 20 63 61 6c 6c 62 61 63 6b 29 ,Int)) callback)
83c0: 20 28 49 31 2c 49 32 2c 49 33 29 3b 0a 20 20 20 (I1,I2,I3);.
83d0: 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e fprintf(out,"->
83e0: 7b 25 64 7d 5c 6e 22 2c 49 72 2e 78 29 3b 0a 20 {%d}\n",Ir.x);.
83f0: 20 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a fflush(out);.
8400: 0a 23 69 66 6e 64 65 66 20 53 4b 49 50 5f 45 58 .#ifndef SKIP_EX
8410: 54 52 41 5f 53 54 52 55 43 54 53 0a 20 20 20 20 TRA_STRUCTS.
8420: 43 72 20 3d 20 43 5f 43 64 43 28 43 31 2c 64 32 Cr = C_CdC(C1,d2
8430: 2c 43 33 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 ,C3);. fprint
8440: 66 28 6f 75 74 2c 22 2d 3e 7b 27 25 63 27 7d 5c f(out,"->{'%c'}\
8450: 6e 22 2c 43 72 2e 78 29 3b 0a 20 20 20 20 66 66 n",Cr.x);. ff
8460: 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20 20 43 lush(out);. C
8470: 72 2e 78 20 3d 20 27 5c 30 27 3b 20 63 6c 65 61 r.x = '\0'; clea
8480: 72 5f 74 72 61 63 65 73 28 29 3b 0a 20 20 20 20 r_traces();.
8490: 63 61 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 callback = alloc
84a0: 5f 63 61 6c 6c 62 61 63 6b 28 26 43 5f 43 64 43 _callback(&C_CdC
84b0: 5f 73 69 6d 75 6c 61 74 6f 72 2c 28 76 6f 69 64 _simulator,(void
84c0: 2a 29 26 43 5f 43 64 43 29 3b 0a 20 20 20 20 43 *)&C_CdC);. C
84d0: 72 20 3d 20 28 28 43 68 61 72 20 28 2a 29 20 28 r = ((Char (*) (
84e0: 43 68 61 72 2c 64 6f 75 62 6c 65 2c 43 68 61 72 Char,double,Char
84f0: 29 29 20 63 61 6c 6c 62 61 63 6b 29 20 28 43 31 )) callback) (C1
8500: 2c 64 32 2c 43 33 29 3b 0a 20 20 20 20 66 70 72 ,d2,C3);. fpr
8510: 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 7b 27 25 63 intf(out,"->{'%c
8520: 27 7d 5c 6e 22 2c 43 72 2e 78 29 3b 0a 20 20 20 '}\n",Cr.x);.
8530: 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 0a 20 fflush(out);..
8540: 20 20 20 46 72 20 3d 20 46 5f 46 66 64 28 46 31 Fr = F_Ffd(F1
8550: 2c 66 32 2c 64 33 29 3b 0a 20 20 20 20 66 70 72 ,f2,d3);. fpr
8560: 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 7b 25 67 7d intf(out,"->{%g}
8570: 5c 6e 22 2c 46 72 2e 78 29 3b 0a 20 20 20 20 66 \n",Fr.x);. f
8580: 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20 20 flush(out);.
8590: 46 72 2e 78 20 3d 20 30 2e 30 3b 20 63 6c 65 61 Fr.x = 0.0; clea
85a0: 72 5f 74 72 61 63 65 73 28 29 3b 0a 20 20 20 20 r_traces();.
85b0: 63 61 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 callback = alloc
85c0: 5f 63 61 6c 6c 62 61 63 6b 28 26 46 5f 46 66 64 _callback(&F_Ffd
85d0: 5f 73 69 6d 75 6c 61 74 6f 72 2c 28 76 6f 69 64 _simulator,(void
85e0: 2a 29 26 46 5f 46 66 64 29 3b 0a 20 20 20 20 46 *)&F_Ffd);. F
85f0: 72 20 3d 20 28 28 46 6c 6f 61 74 20 28 2a 29 20 r = ((Float (*)
8600: 28 46 6c 6f 61 74 2c 66 6c 6f 61 74 2c 64 6f 75 (Float,float,dou
8610: 62 6c 65 29 29 20 63 61 6c 6c 62 61 63 6b 29 20 ble)) callback)
8620: 28 46 31 2c 66 32 2c 64 33 29 3b 0a 20 20 20 20 (F1,f2,d3);.
8630: 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 7b fprintf(out,"->{
8640: 25 67 7d 5c 6e 22 2c 46 72 2e 78 29 3b 0a 20 20 %g}\n",Fr.x);.
8650: 20 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 0a fflush(out);..
8660: 20 20 20 20 44 72 20 3d 20 44 5f 66 44 64 28 66 Dr = D_fDd(f
8670: 31 2c 44 32 2c 64 33 29 3b 0a 20 20 20 20 66 70 1,D2,d3);. fp
8680: 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 7b 25 67 rintf(out,"->{%g
8690: 7d 5c 6e 22 2c 44 72 2e 78 29 3b 0a 20 20 20 20 }\n",Dr.x);.
86a0: 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20 fflush(out);.
86b0: 20 44 72 2e 78 20 3d 20 30 2e 30 3b 20 63 6c 65 Dr.x = 0.0; cle
86c0: 61 72 5f 74 72 61 63 65 73 28 29 3b 0a 20 20 20 ar_traces();.
86d0: 20 63 61 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f callback = allo
86e0: 63 5f 63 61 6c 6c 62 61 63 6b 28 26 44 5f 66 44 c_callback(&D_fD
86f0: 64 5f 73 69 6d 75 6c 61 74 6f 72 2c 28 76 6f 69 d_simulator,(voi
8700: 64 2a 29 26 44 5f 66 44 64 29 3b 0a 20 20 20 20 d*)&D_fDd);.
8710: 44 72 20 3d 20 28 28 44 6f 75 62 6c 65 20 28 2a Dr = ((Double (*
8720: 29 20 28 66 6c 6f 61 74 2c 44 6f 75 62 6c 65 2c ) (float,Double,
8730: 64 6f 75 62 6c 65 29 29 20 63 61 6c 6c 62 61 63 double)) callbac
8740: 6b 29 20 28 66 31 2c 44 32 2c 64 33 29 3b 0a 20 k) (f1,D2,d3);.
8750: 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c 22 fprintf(out,"
8760: 2d 3e 7b 25 67 7d 5c 6e 22 2c 44 72 2e 78 29 3b ->{%g}\n",Dr.x);
8770: 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75 74 29 . fflush(out)
8780: 3b 0a 23 65 6e 64 69 66 0a 0a 20 20 20 20 4a 72 ;.#endif.. Jr
8790: 20 3d 20 4a 5f 4a 69 4a 28 4a 31 2c 69 32 2c 4a = J_JiJ(J1,i2,J
87a0: 32 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 66 28 2);. fprintf(
87b0: 6f 75 74 2c 22 2d 3e 7b 25 6c 64 2c 25 6c 64 7d out,"->{%ld,%ld}
87c0: 5c 6e 22 2c 4a 72 2e 6c 31 2c 4a 72 2e 6c 32 29 \n",Jr.l1,Jr.l2)
87d0: 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75 74 ;. fflush(out
87e0: 29 3b 0a 20 20 20 20 4a 72 2e 6c 31 20 3d 20 4a );. Jr.l1 = J
87f0: 72 2e 6c 32 20 3d 20 30 3b 20 63 6c 65 61 72 5f r.l2 = 0; clear_
8800: 74 72 61 63 65 73 28 29 3b 0a 20 20 20 20 63 61 traces();. ca
8810: 6c 6c 62 61 63 6b 20 3d 20 61 6c 6c 6f 63 5f 63 llback = alloc_c
8820: 61 6c 6c 62 61 63 6b 28 26 4a 5f 4a 69 4a 5f 73 allback(&J_JiJ_s
8830: 69 6d 75 6c 61 74 6f 72 2c 28 76 6f 69 64 2a 29 imulator,(void*)
8840: 26 4a 5f 4a 69 4a 29 3b 0a 20 20 20 20 4a 72 20 &J_JiJ);. Jr
8850: 3d 20 28 28 4a 20 28 2a 29 20 28 4a 2c 69 6e 74 = ((J (*) (J,int
8860: 2c 4a 29 29 20 63 61 6c 6c 62 61 63 6b 29 20 28 ,J)) callback) (
8870: 4a 31 2c 69 32 2c 4a 32 29 3b 0a 20 20 20 20 66 J1,i2,J2);. f
8880: 70 72 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 7b 25 printf(out,"->{%
8890: 6c 64 2c 25 6c 64 7d 5c 6e 22 2c 4a 72 2e 6c 31 ld,%ld}\n",Jr.l1
88a0: 2c 4a 72 2e 6c 32 29 3b 0a 20 20 20 20 66 66 6c ,Jr.l2);. ffl
88b0: 75 73 68 28 6f 75 74 29 3b 0a 0a 23 69 66 6e 64 ush(out);..#ifnd
88c0: 65 66 20 53 4b 49 50 5f 45 58 54 52 41 5f 53 54 ef SKIP_EXTRA_ST
88d0: 52 55 43 54 53 0a 23 69 66 6e 64 65 66 20 53 4b RUCTS.#ifndef SK
88e0: 49 50 5f 54 0a 20 20 20 20 54 72 20 3d 20 54 5f IP_T. Tr = T_
88f0: 54 63 54 28 54 31 2c 27 20 27 2c 54 32 29 3b 0a TcT(T1,' ',T2);.
8900: 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74 2c fprintf(out,
8910: 22 2d 3e 7b 5c 22 25 63 25 63 25 63 5c 22 7d 5c "->{\"%c%c%c\"}\
8920: 6e 22 2c 54 72 2e 63 5b 30 5d 2c 54 72 2e 63 5b n",Tr.c[0],Tr.c[
8930: 31 5d 2c 54 72 2e 63 5b 32 5d 29 3b 0a 20 20 20 1],Tr.c[2]);.
8940: 20 66 66 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 fflush(out);.
8950: 20 20 54 72 2e 63 5b 30 5d 20 3d 20 54 72 2e 63 Tr.c[0] = Tr.c
8960: 5b 31 5d 20 3d 20 54 72 2e 63 5b 32 5d 20 3d 20 [1] = Tr.c[2] =
8970: 30 3b 20 63 6c 65 61 72 5f 74 72 61 63 65 73 28 0; clear_traces(
8980: 29 3b 0a 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 );. callback
8990: 3d 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61 63 6b = alloc_callback
89a0: 28 26 54 5f 54 63 54 5f 73 69 6d 75 6c 61 74 6f (&T_TcT_simulato
89b0: 72 2c 28 76 6f 69 64 2a 29 26 54 5f 54 63 54 29 r,(void*)&T_TcT)
89c0: 3b 0a 20 20 20 20 54 72 20 3d 20 28 28 54 20 28 ;. Tr = ((T (
89d0: 2a 29 20 28 54 2c 63 68 61 72 2c 54 29 29 20 63 *) (T,char,T)) c
89e0: 61 6c 6c 62 61 63 6b 29 20 28 54 31 2c 27 20 27 allback) (T1,' '
89f0: 2c 54 32 29 3b 0a 20 20 20 20 66 70 72 69 6e 74 ,T2);. fprint
8a00: 66 28 6f 75 74 2c 22 2d 3e 7b 5c 22 25 63 25 63 f(out,"->{\"%c%c
8a10: 25 63 5c 22 7d 5c 6e 22 2c 54 72 2e 63 5b 30 5d %c\"}\n",Tr.c[0]
8a20: 2c 54 72 2e 63 5b 31 5d 2c 54 72 2e 63 5b 32 5d ,Tr.c[1],Tr.c[2]
8a30: 29 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75 );. fflush(ou
8a40: 74 29 3b 0a 23 65 6e 64 69 66 0a 0a 23 69 66 6e t);.#endif..#ifn
8a50: 64 65 66 20 53 4b 49 50 5f 58 0a 20 20 20 20 58 def SKIP_X. X
8a60: 72 20 3d 20 58 5f 42 63 64 42 28 42 31 2c 63 32 r = X_BcdB(B1,c2
8a70: 2c 64 33 2c 42 32 29 3b 0a 20 20 20 20 66 70 72 ,d3,B2);. fpr
8a80: 69 6e 74 66 28 6f 75 74 2c 22 2d 3e 7b 5c 22 25 intf(out,"->{\"%
8a90: 73 5c 22 2c 27 25 63 27 7d 5c 6e 22 2c 58 72 2e s\",'%c'}\n",Xr.
8aa0: 63 2c 58 72 2e 63 31 29 3b 0a 20 20 20 20 66 66 c,Xr.c1);. ff
8ab0: 6c 75 73 68 28 6f 75 74 29 3b 0a 20 20 20 20 58 lush(out);. X
8ac0: 72 2e 63 5b 30 5d 3d 58 72 2e 63 31 3d 27 5c 30 r.c[0]=Xr.c1='\0
8ad0: 27 3b 20 63 6c 65 61 72 5f 74 72 61 63 65 73 28 '; clear_traces(
8ae0: 29 3b 0a 20 20 20 20 63 61 6c 6c 62 61 63 6b 20 );. callback
8af0: 3d 20 61 6c 6c 6f 63 5f 63 61 6c 6c 62 61 63 6b = alloc_callback
8b00: 28 26 58 5f 42 63 64 42 5f 73 69 6d 75 6c 61 74 (&X_BcdB_simulat
8b10: 6f 72 2c 28 76 6f 69 64 2a 29 26 58 5f 42 63 64 or,(void*)&X_Bcd
8b20: 42 29 3b 0a 20 20 20 20 58 72 20 3d 20 28 28 58 B);. Xr = ((X
8b30: 20 28 2a 29 20 28 42 2c 63 68 61 72 2c 64 6f 75 (*) (B,char,dou
8b40: 62 6c 65 2c 42 29 29 20 63 61 6c 6c 62 61 63 6b ble,B)) callback
8b50: 29 20 28 42 31 2c 63 32 2c 64 33 2c 42 32 29 3b ) (B1,c2,d3,B2);
8b60: 0a 20 20 20 20 66 70 72 69 6e 74 66 28 6f 75 74 . fprintf(out
8b70: 2c 22 2d 3e 7b 5c 22 25 73 5c 22 2c 27 25 63 27 ,"->{\"%s\",'%c'
8b80: 7d 5c 6e 22 2c 58 72 2e 63 2c 58 72 2e 63 31 29 }\n",Xr.c,Xr.c1)
8b90: 3b 0a 20 20 20 20 66 66 6c 75 73 68 28 6f 75 74 ;. fflush(out
8ba0: 29 3b 0a 23 65 6e 64 69 66 0a 23 65 6e 64 69 66 );.#endif.#endif
8bb0: 0a 20 20 7d 0a 23 65 6e 64 69 66 0a 0a 20 20 65 . }.#endif.. e
8bc0: 78 69 74 28 30 29 3b 0a 7d 0a xit(0);.}.