Artifact d5158886503dc0e7a1b8b9b0cf30a54a2e62e814:


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);.}.