- int size = strtol (optarg, 0, 0);
-
- switch (size)
- {
- case 32:
- Paranoia< real_c_float<32, SFmode> >().main();
- break;
-
- case 64:
- Paranoia< real_c_float<64, DFmode> >().main();
- break;
-
- case 96:
- Paranoia< real_c_float<96, XFmode> >().main();
- break;
-
- case 128:
- Paranoia< real_c_float<128, TFmode> >().main();
+ static const struct {
+ const char *name;
+ const struct real_format *fmt;
+ } fmts[] = {
+#define F(x) { #x, &x##_format }
+ F(ieee_single),
+ F(ieee_double),
+ F(ieee_extended_motorola),
+ F(ieee_extended_intel_96),
+ F(ieee_extended_intel_128),
+ F(ibm_extended),
+ F(ieee_quad),
+ F(vax_f),
+ F(vax_d),
+ F(vax_g),
+ F(i370_single),
+ F(i370_double),
+ F(real_internal),
+#undef F
+ };
+
+ int i, n = sizeof (fmts)/sizeof(*fmts);
+
+ for (i = 0; i < n; ++i)
+ if (strcmp (fmts[i].name, optarg) == 0)