/*****************************************************************************/
/* */
/* FACTOR A, B, A-B, AND A+B */
/* 11/25/06 (dkc) */
/* */
/* Input to this program is a triplet of (a,b) values. These (a,b) values */
/* are different representations of T**p or p*T**p. a, b, a-b, and a+b */
/* are factored for each (a,b) value. */
/* */
/* Note: a-b and a+b are switched for [(a**p-b**p)/(a-b)] (the third (a,b) */
/* value). */
/* */
/*****************************************************************************/
#include <stdio.h>
#include <math.h>
#include "table10.h"
int main ()
{
int insize=408;
unsigned int input[408*4]={
0x25c01a, 0x2400b5, 0x1e70025, 0x3030001,
0x25c01a, 0x1bf65, 0x1e70025, 0x3030001,
0x2400b5, 0x1bf65, 0x1e70025, 0x3030001,
0x25bbf3, 0x228c1e, 0x3a90013, 0x3030000,
0x25bbf3, 0x32fd5, 0x3a90013, 0x3030000,
0x228c1e, 0x32fd5, 0x3a90013, 0x3030000,
0x25b880, 0x1d54bd, 0xa30049, 0x3030000,
0x25b880, 0x863c3, 0xa30049, 0x3030000,
0x1d54bd, 0x863c3, 0xa30049, 0x3030000,
0x254fad, 0x1a18d0, 0x3730013, 0x3030001,
0x254fad, 0xb36dd, 0x3730013, 0x3030001,
0x1a18d0, 0xb36dd, 0x3730013, 0x3030001,
0x2504cc, 0x1b370f, 0x2650013, 0x3030000,
0x2504cc, 0x9cdbd, 0x2650013, 0x3030000,
0x1b370f, 0x9cdbd, 0x2650013, 0x3030000,
0x24d3a2, 0x20121b, 0x2770013, 0x3030000,
0x24d3a2, 0x4c187, 0x2770013, 0x3030000,
0x20121b, 0x4c187, 0x2770013, 0x3030001,
0x24a42f, 0x166ac3, 0x1330025, 0x3030000,
0x24a42f, 0xe396c, 0x1330025, 0x3030000,
0x166ac3, 0xe396c, 0x1330025, 0x3030000,
0x236a85, 0x15cbb9, 0x1b10025, 0x3030001,
0x236a85, 0xd9ecc, 0x1b10025, 0x3030001,
0x15cbb9, 0xd9ecc, 0x1b10025, 0x3030001,
0x230761, 0x11cba0, 0x2410013, 0x3030000,
0x230761, 0x113bc1, 0x2410013, 0x3030000,
0x11cba0, 0x113bc1, 0x2410013, 0x3030000,
0x21a861, 0x1e05ed, 0x1330025, 0x3030000,
0x21a861, 0x3a274, 0x1330025, 0x3030000,
0x1e05ed, 0x3a274, 0x1330025, 0x3030000,
0x215059, 0x151260, 0x32b0013, 0x3030000,
0x215059, 0xc3df9, 0x32b0013, 0x3030000,
0x151260, 0xc3df9, 0x32b0013, 0x3030000,
0x20fdf0, 0x167441, 0x32b0013, 0x3030001,
0x20fdf0, 0xa89af, 0x32b0013, 0x3030001,
0x167441, 0xa89af, 0x32b0013, 0x3030001,
0x20edb0, 0x1ad089, 0x2410013, 0x3030000,
0x20edb0, 0x61d27, 0x2410013, 0x3030000,
0x1ad089, 0x61d27, 0x2410013, 0x3030000,
0x209c33, 0x1cf2ef, 0x1b10025, 0x3030000,
0x209c33, 0x3a944, 0x1b10025, 0x3030000,
0x1cf2ef, 0x3a944, 0x1b10025, 0x3030000,
0x1ebbaf, 0x14cd2f, 0x18d0025, 0x3030000,
0x1ebbaf, 0x9ee80, 0x18d0025, 0x3030000,
0x14cd2f, 0x9ee80, 0x18d0025, 0x3030000,
0x1ea74b, 0x16aaac, 0x21d0013, 0x3030000,
0x1ea74b, 0x7fc9f, 0x21d0013, 0x3030000,
0x16aaac, 0x7fc9f, 0x21d0013, 0x3030000,
0x1e847f, 0x1dcbed, 0x33d0013, 0x3030001,
0x1e847f, 0xb892, 0x33d0013, 0x3030001,
0x1dcbed, 0xb892, 0x33d0013, 0x3030001,
0x1e808d, 0x134046, 0xc70049, 0x3030000,
0x1e808d, 0xb4047, 0xc70049, 0x3030000,
0x134046, 0xb4047, 0xc70049, 0x3030000,
0x1e4538, 0x134059, 0x10f0025, 0x3030000,
0x1e4538, 0xb04df, 0x10f0025, 0x3030000,
0x134059, 0xb04df, 0x10f0025, 0x3030000,
0x1dc4c1, 0x137072, 0x20b0013, 0x3030000,
0x1dc4c1, 0xa544f, 0x20b0013, 0x3030000,
0x137072, 0xa544f, 0x20b0013, 0x3030000,
0x1dba32, 0x139dc9, 0x20b0013, 0x3030000,
0x1dba32, 0xa1c69, 0x20b0013, 0x3030000,
0x139dc9, 0xa1c69, 0x20b0013, 0x3030000,
0x1d71b6, 0x153ebd, 0x2f50013, 0x3030000,
0x1d71b6, 0x832f9, 0x2f50013, 0x3030000,
0x153ebd, 0x832f9, 0x2f50013, 0x3030000,
0x1d71a5, 0x18168d, 0x18d0025, 0x3030001,
0x1d71a5, 0x55b18, 0x18d0025, 0x3030001,
0x18168d, 0x55b18, 0x18d0025, 0x3030001,
0x1d4db7, 0xf5a78, 0x2e30013, 0x3030000,
0x1d4db7, 0xdf33f, 0x2e30013, 0x3030000,
0xf5a78, 0xdf33f, 0x2e30013, 0x3030000,
0x1d0a13, 0x19c037, 0x21d0013, 0x3030001,
0x1d0a13, 0x349dc, 0x21d0013, 0x3030000,
0x19c037, 0x349dc, 0x21d0013, 0x3030000,
0x1cee6f, 0x123e5d, 0x17b0025, 0x3030001,
0x1cee6f, 0xab012, 0x17b0025, 0x3030001,
0x123e5d, 0xab012, 0x17b0025, 0x3030001,
0x1ce850, 0x1740dd, 0x10f0025, 0x3030000,
0x1ce850, 0x5a773, 0x10f0025, 0x3030000,
0x1740dd, 0x5a773, 0x10f0025, 0x3030000,
0x1c8bb9, 0x10d1df, 0x7f006d, 0x3030001,
0x1c8bb9, 0xbb9da, 0x7f006d, 0x3030001,
0x10d1df, 0xbb9da, 0x7f006d, 0x3030001,
0x1bbc28, 0x1616cf, 0x2e30013, 0x3030001,
0x1bbc28, 0x5a559, 0x2e30013, 0x3030001,
0x1616cf, 0x5a559, 0x2e30013, 0x3030001,
0x1ba865, 0x19a9ff, 0xc70049, 0x3030000,
0x1ba865, 0x1fe66, 0xc70049, 0x3030000,
0x19a9ff, 0x1fe66, 0xc70049, 0x3030000,
0x1b8b15, 0x1651ce, 0x17b0025, 0x3030000,
0x1b8b15, 0x53947, 0x17b0025, 0x3030000,
0x1651ce, 0x53947, 0x17b0025, 0x3030000,
0x1b8196, 0x18f2b1, 0x2f50013, 0x3030000,
0x1b8196, 0x28ee5, 0x2f50013, 0x3030000,
0x18f2b1, 0x28ee5, 0x2f50013, 0x3030000,
0x1b2449, 0xf97fd, 0x7f0049, 0x3030000,
0x1b2449, 0xb8c4c, 0x7f0049, 0x3030000,
0xf97fd, 0xb8c4c, 0x7f0049, 0x3030000,
0x1b1e61, 0xee62e, 0x1e70013, 0x3030000,
0x1b1e61, 0xc3833, 0x1e70013, 0x3030001,
0xee62e, 0xc3833, 0x1e70013, 0x3030000,
0x1b086f, 0x101d84, 0x250013, 0x3060001,
0x1b086f, 0xaeaeb, 0x250013, 0x3060001,
0x101d84, 0xaeaeb, 0x250013, 0x3060001,
0x1ac405, 0x16587b, 0x7f006d, 0x3030000,
0x1ac405, 0x46b8a, 0x7f006d, 0x3030000,
0x16587b, 0x46b8a, 0x7f006d, 0x3030000,
0x1abb19, 0xe73fd, 0xb50049, 0x3030000,
0x1abb19, 0xc471c, 0xb50049, 0x3030000,
0xe73fd, 0xc471c, 0xb50049, 0x3030000,
0x199205, 0x14ec21, 0x7f0049, 0x3030000,
0x199205, 0x4a5e4, 0x7f0049, 0x3030000,
0x14ec21, 0x4a5e4, 0x7f0049, 0x3030000,
0x18dd0b, 0x15e759, 0x1e70013, 0x3030000,
0x18dd0b, 0x2f5b2, 0x1e70013, 0x3030000,
0x15e759, 0x2f5b2, 0x1e70013, 0x3030000,
0x189324, 0x1661c5, 0x250013, 0x3060000,
0x189324, 0x2315f, 0x250013, 0x3060000,
0x1661c5, 0x2315f, 0x250013, 0x3060000,
0x17accc, 0x16a401, 0xb50049, 0x3030000,
0x17accc, 0x108cb, 0xb50049, 0x3030000,
0x16a401, 0x108cb, 0xb50049, 0x3030000,
0x16f73f, 0xddc63, 0x2770013, 0x3030001,
0x16f73f, 0x91adc, 0x2770013, 0x3030001,
0xddc63, 0x91adc, 0x2770013, 0x3030001,
0x16799b, 0xff7e7, 0x2770013, 0x3030000,
0x16799b, 0x681b4, 0x2770013, 0x3030000,
0xff7e7, 0x681b4, 0x2770013, 0x3030000,
0x1659bf, 0xf5ec1, 0xa30049, 0x3030000,
0x1659bf, 0x6fafe, 0xa30049, 0x3030000,
0xf5ec1, 0x6fafe, 0xa30049, 0x3030000,
0x1650d0, 0xf16af, 0x1b10013, 0x3030000,
0x1650d0, 0x73a21, 0x1b10013, 0x3030000,
0xf16af, 0x73a21, 0x1b10013, 0x3030000,
0x159c0b, 0xc1822, 0x6d0049, 0x3030000,
0x159c0b, 0x983e9, 0x6d0049, 0x3030000,
0xc1822, 0x983e9, 0x6d0049, 0x3030000,
0x156949, 0xf9b83, 0x2650013, 0x3030000,
0x156949, 0x5cdc6, 0x2650013, 0x3030000,
0xf9b83, 0x5cdc6, 0x2650013, 0x3030000,
0x153a1a, 0xc6e47, 0x1330025, 0x3030000,
0x153a1a, 0x8cbd3, 0x1330025, 0x3030000,
0xc6e47, 0x8cbd3, 0x1330025, 0x3030000,
0x1519f7, 0x122fbe, 0xa30049, 0x3030000,
0x1519f7, 0x2ea39, 0xa30049, 0x3030000,
0x122fbe, 0x2ea39, 0xa30049, 0x3030000,
0x141e51, 0x1213e6, 0x2650013, 0x3030000,
0x141e51, 0x20a6b, 0x2650013, 0x3030000,
0x1213e6, 0x20a6b, 0x2650013, 0x3030000,
0x141a40, 0x135139, 0x1b10013, 0x3030000,
0x141a40, 0xc907, 0x1b10013, 0x3030000,
0x135139, 0xc907, 0x1b10013, 0x3030001,
0x13ea13, 0xd039d, 0x2410013, 0x3030000,
0x13ea13, 0x6e676, 0x2410013, 0x3030000,
0xd039d, 0x6e676, 0x2410013, 0x3030000,
0x13afa6, 0x10f489, 0x1330025, 0x3030000,
0x13afa6, 0x2bb1d, 0x1330025, 0x3030000,
0x10f489, 0x2bb1d, 0x1330025, 0x3030000,
0x134534, 0xe3f1d, 0x18d0013, 0x3030000,
0x134534, 0x50617, 0x18d0013, 0x3030000,
0xe3f1d, 0x50617, 0x18d0013, 0x3030001,
0x1332d7, 0xb2480, 0xc70025, 0x3030000,
0x1332d7, 0x80e57, 0xc70025, 0x3030000,
0xb2480, 0x80e57, 0xc70025, 0x3030000,
0x12f031, 0x1292f3, 0x6d0049, 0x3030000,
0x12f031, 0x5d3e, 0x6d0049, 0x3030000,
0x1292f3, 0x5d3e, 0x6d0049, 0x3030000,
0x12961f, 0xa9b9e, 0x17b0013, 0x3030000,
0x12961f, 0x7fa81, 0x17b0013, 0x3030000,
0xa9b9e, 0x7fa81, 0x17b0013, 0x3030000,
0x12436e, 0xac6a5, 0x21d0013, 0x3030001,
0x12436e, 0x77cc9, 0x21d0013, 0x3030001,
0xac6a5, 0x77cc9, 0x21d0013, 0x3030001,
0x1240e4, 0x10307f, 0x18d0013, 0x3030000,
0x1240e4, 0x21065, 0x18d0013, 0x3030000,
0x10307f, 0x21065, 0x18d0013, 0x3030000,
0x11f15e, 0xd5f17, 0x17b0013, 0x3030000,
0x11f15e, 0x49247, 0x17b0013, 0x3030000,
0xd5f17, 0x49247, 0x17b0013, 0x3030001,
0x11c5fd, 0xce14e, 0x21d0013, 0x3030000,
0x11c5fd, 0x4e4af, 0x21d0013, 0x3030000,
0xce14e, 0x4e4af, 0x21d0013, 0x3030000,
0x11c005, 0xf655d, 0xc70025, 0x3030001,
0x11c005, 0x25aa8, 0xc70025, 0x3030000,
0xf655d, 0x25aa8, 0xc70025, 0x3030000,
0x119bab, 0x116bb6, 0x2410013, 0x3030000,
0x119bab, 0x2ff5, 0x2410013, 0x3030000,
0x116bb6, 0x2ff5, 0x2410013, 0x3030000,
0x11630f, 0xb8541, 0x10f0025, 0x3030000,
0x11630f, 0x5ddce, 0x10f0025, 0x3030000,
0xb8541, 0x5ddce, 0x10f0025, 0x3030000,
0x10b965, 0x884aa, 0xb50025, 0x3030000,
0x10b965, 0x834bb, 0xb50025, 0x3030000,
0x884aa, 0x834bb, 0xb50025, 0x3030000,
0x1081db, 0xdc35d, 0x10f0025, 0x3030000,
0x1081db, 0x2be7e, 0x10f0025, 0x3030000,
0xdc35d, 0x2be7e, 0x10f0025, 0x3030000,
0x1072a9, 0xd4789, 0x20b0013, 0x3030000,
0x1072a9, 0x32b20, 0x20b0013, 0x3030000,
0xd4789, 0x32b20, 0x20b0013, 0x3030000,
0x106711, 0xd5db0, 0x20b0013, 0x3030000,
0x106711, 0x30961, 0x20b0013, 0x3030000,
0xd5db0, 0x30961, 0x20b0013, 0x3030000,
0xf96cc, 0x9463f, 0x1e70013, 0x3030000,
0xf96cc, 0x6508d, 0x1e70013, 0x3030000,
0x9463f, 0x6508d, 0x1e70013, 0x3030000,
0xf7f62, 0xa12a3, 0x7f0049, 0x3030000,
0xf7f62, 0x56cbf, 0x7f0049, 0x3030000,
0xa12a3, 0x56cbf, 0x7f0049, 0x3030000,
0xea427, 0xe5286, 0xb50025, 0x3030001,
0xea427, 0x51a1, 0xb50025, 0x3030001,
0xe5286, 0x51a1, 0xb50025, 0x3030001,
0xe3ec2, 0xce587, 0x7f0049, 0x3030000,
0xe3ec2, 0x1593b, 0x7f0049, 0x3030000,
0xce587, 0x1593b, 0x7f0049, 0x3030000,
0xe1ed7, 0x8facb, 0xa30025, 0x3030001,
0xe1ed7, 0x5240c, 0xa30025, 0x3030001,
0x8facb, 0x5240c, 0xa30025, 0x3030001,
0xe0185, 0xd1cdc, 0x1e70013, 0x3030000,
0xe0185, 0xe4a9, 0x1e70013, 0x3030000,
0xd1cdc, 0xe4a9, 0x1e70013, 0x3030000,
0xd96c9, 0x726ef, 0x1330013, 0x3030001,
0xd96c9, 0x66fda, 0x1330013, 0x3030001,
0x726ef, 0x66fda, 0x1330013, 0x3030001,
0xd7bfd, 0xad8fc, 0xa30025, 0x3030001,
0xd7bfd, 0x2a301, 0xa30025, 0x3030001,
0xad8fc, 0x2a301, 0xa30025, 0x3030001,
0xd23d3, 0x6f66d, 0x1b10013, 0x3030000,
0xd23d3, 0x62d66, 0x1b10013, 0x3030000,
0x6f66d, 0x62d66, 0x1b10013, 0x3030000,
0xc810c, 0x66f25, 0x6d0049, 0x3030000,
0xc810c, 0x611e7, 0x6d0049, 0x3030000,
0x66f25, 0x611e7, 0x6d0049, 0x3030000,
0xc77d5, 0x9d8fb, 0x1b10013, 0x3030000,
0xc77d5, 0x29eda, 0x1b10013, 0x3030000,
0x9d8fb, 0x29eda, 0x1b10013, 0x3030000,
0xb7b21, 0x6c5c3, 0x18d0013, 0x3030000,
0xb7b21, 0x4b55e, 0x18d0013, 0x3030000,
0x6c5c3, 0x4b55e, 0x18d0013, 0x3030000,
0xb3c0f, 0xa5ffc, 0x6d0049, 0x3030000,
0xb3c0f, 0xdc13, 0x6d0049, 0x3030000,
0xa5ffc, 0xdc13, 0x6d0049, 0x3030000,
0xb2c1b, 0x81919, 0x18d0013, 0x3030000,
0xb2c1b, 0x31302, 0x18d0013, 0x3030000,
0x81919, 0x31302, 0x18d0013, 0x3030000,
0xb0c76, 0x6b38f, 0xc70025, 0x3030000,
0xb0c76, 0x458e7, 0xc70025, 0x3030000,
0x6b38f, 0x458e7, 0xc70025, 0x3030000,
0xaea16, 0x7e895, 0x10f0013, 0x3030001,
0xaea16, 0x30181, 0x10f0013, 0x3030001,
0x7e895, 0x30181, 0x10f0013, 0x3030001,
0xa7027, 0x78137, 0x17b0013, 0x3030000,
0xa7027, 0x2eef0, 0x17b0013, 0x3030000,
0x78137, 0x2eef0, 0x17b0013, 0x3030000,
0xa3876, 0x93bf9, 0x10f0013, 0x3030001,
0xa3876, 0xfc7d, 0x10f0013, 0x3030001,
0x93bf9, 0xfc7d, 0x10f0013, 0x3030001,
0xa1d1d, 0x915ba, 0xc70025, 0x3030000,
0xa1d1d, 0x10763, 0xc70025, 0x3030000,
0x915ba, 0x10763, 0xc70025, 0x3030000,
0x9c440, 0x5d973, 0x7f0025, 0x3030001,
0x9c440, 0x3eacd, 0x7f0025, 0x3030001,
0x5d973, 0x3eacd, 0x7f0025, 0x3030001,
0x9bb3f, 0x8dae0, 0x17b0013, 0x3030000,
0x9bb3f, 0xe05f, 0x17b0013, 0x3030000,
0x8dae0, 0xe05f, 0x17b0013, 0x3030000,
0x9a78f, 0x4fc98, 0xb50025, 0x3030000,
0x9a78f, 0x4aaf7, 0xb50025, 0x3030000,
0x4fc98, 0x4aaf7, 0xb50025, 0x3030000,
0x920f8, 0x7b8e7, 0x7f0025, 0x3030001,
0x920f8, 0x16811, 0x7f0025, 0x3030001,
0x7b8e7, 0x16811, 0x7f0025, 0x3030001,
0x86a05, 0x84f60, 0xb50025, 0x3030000,
0x86a05, 0x1aa5, 0xb50025, 0x3030000,
0x84f60, 0x1aa5, 0xb50025, 0x3030000,
0x81c53, 0x55faa, 0xa30025, 0x3030000,
0x81c53, 0x2bca9, 0xa30025, 0x3030000,
0x55faa, 0x2bca9, 0xa30025, 0x3030000,
0x7cf42, 0x42e81, 0x6d0025, 0x3030001,
0x7cf42, 0x3a0c1, 0x6d0025, 0x3030001,
0x42e81, 0x3a0c1, 0x6d0025, 0x3030001,
0x7b336, 0x66ba1, 0xa30025, 0x3030000,
0x7b336, 0x14795, 0xa30025, 0x3030000,
0x66ba1, 0x14795, 0xa30025, 0x3030000,
0x7b2b8, 0x52d2f, 0x1330013, 0x3030000,
0x7b2b8, 0x28589, 0x1330013, 0x3030000,
0x52d2f, 0x28589, 0x1330013, 0x3030000,
0x6f779, 0x4a5ae, 0xc70013, 0x3030001,
0x6f779, 0x251cb, 0xc70013, 0x3030001,
0x4a5ae, 0x251cb, 0xc70013, 0x3030001,
0x6e9e8, 0x6ace1, 0x1330013, 0x3030000,
0x6e9e8, 0x3d07, 0x1330013, 0x3030000,
0x6ace1, 0x3d07, 0x1330013, 0x3030000,
0x6cfd3, 0x6b9ae, 0x6d0025, 0x3030001,
0x6cfd3, 0x1625, 0x6d0025, 0x3030001,
0x6b9ae, 0x1625, 0x6d0025, 0x3030001,
0x67c25, 0x3bc51, 0x10f0013, 0x3030000,
0x67c25, 0x2bfd4, 0x10f0013, 0x3030000,
0x3bc51, 0x2bfd4, 0x10f0013, 0x3030000,
0x64639, 0x4a3dd, 0x10f0013, 0x3030000,
0x64639, 0x1a25c, 0x10f0013, 0x3030000,
0x4a3dd, 0x1a25c, 0x10f0013, 0x3030000,
0x63ab1, 0x60e63, 0xc70013, 0x3030001,
0x63ab1, 0x2c4e, 0xc70013, 0x3030001,
0x60e63, 0x2c4e, 0xc70013, 0x3030001,
0x62195, 0x387a9, 0xb50013, 0x3030001,
0x62195, 0x299ec, 0xb50013, 0x3030001,
0x387a9, 0x299ec, 0xb50013, 0x3030001,
0x59df5, 0x38303, 0x7f0025, 0x3030000,
0x59df5, 0x21af2, 0x7f0025, 0x3030000,
0x38303, 0x21af2, 0x7f0025, 0x3030000,
0x58e5c, 0x5121d, 0xb50013, 0x3030001,
0x58e5c, 0x7c3f, 0xb50013, 0x3030001,
0x5121d, 0x7c3f, 0xb50013, 0x3030001,
0x53491, 0x48faf, 0x7f0025, 0x3030000,
0x53491, 0xa4e2, 0x7f0025, 0x3030000,
0x48faf, 0xa4e2, 0x7f0025, 0x3030000,
0x51763, 0x3b05d, 0xa30013, 0x3030001,
0x51763, 0x16706, 0xa30013, 0x3030001,
0x3b05d, 0x16706, 0xa30013, 0x3030001,
0x4c47b, 0x44ec6, 0xa30013, 0x3030001,
0x4c47b, 0x75b5, 0xa30013, 0x3030001,
0x44ec6, 0x75b5, 0xa30013, 0x3030001,
0x4832b, 0x24ca8, 0x6d0025, 0x3030000,
0x4832b, 0x23683, 0x6d0025, 0x3030000,
0x24ca8, 0x23683, 0x6d0025, 0x3030000,
0x4483f, 0x23e9a, 0x490025, 0x3030001,
0x4483f, 0x209a5, 0x490025, 0x3030001,
0x23e9a, 0x209a5, 0x490025, 0x3030001,
0x4185c, 0x22255, 0xc70013, 0x3030000,
0x4185c, 0x1f607, 0xc70013, 0x3030000,
0x22255, 0x1f607, 0xc70013, 0x3030000,
0x3ff41, 0x3d001, 0x6d0025, 0x3030000,
0x3ff41, 0x2f40, 0x6d0025, 0x3030000,
0x3d001, 0x2f40, 0x6d0025, 0x3030000,
0x3df0d, 0x3186c, 0xc70013, 0x3030000,
0x3df0d, 0xc6a1, 0xc70013, 0x3030000,
0x3186c, 0xc6a1, 0xc70013, 0x3030000,
0x3d3cd, 0x39487, 0x490025, 0x3030001,
0x3d3cd, 0x3f46, 0x490025, 0x3030001,
0x39487, 0x3f46, 0x490025, 0x3030001,
0x38ad3, 0x20389, 0xb50013, 0x3030000,
0x38ad3, 0x1874a, 0xb50013, 0x3030000,
0x20389, 0x1874a, 0xb50013, 0x3030000,
0x3895a, 0x26d37, 0x7f0013, 0x3030001,
0x3895a, 0x11c23, 0x7f0013, 0x3030001,
0x26d37, 0x11c23, 0x7f0013, 0x3030001,
0x3386a, 0x2e92b, 0xb50013, 0x3030000,
0x3386a, 0x4f3f, 0xb50013, 0x3030000,
0x2e92b, 0x4f3f, 0xb50013, 0x3030000,
0x3363a, 0x30c0b, 0x7f0013, 0x3030001,
0x3363a, 0x2a2f, 0x7f0013, 0x3030001,
0x30c0b, 0x2a2f, 0x7f0013, 0x3030001,
0x3066b, 0x1be10, 0xa30013, 0x3030000,
0x3066b, 0x1485b, 0xa30013, 0x3030000,
0x1be10, 0x1485b, 0xa30013, 0x3030000,
0x2ed40, 0x22a23, 0xa30013, 0x3030000,
0x2ed40, 0xc31d, 0xa30013, 0x3030000,
0x22a23, 0xc31d, 0xa30013, 0x3030000,
0x2df1c, 0x193f1, 0x6d0013, 0x3030001,
0x2df1c, 0x14b2b, 0x6d0013, 0x3030001,
0x193f1, 0x14b2b, 0x6d0013, 0x3030001,
0x2a1f3, 0x251cc, 0x6d0013, 0x3030001,
0x2a1f3, 0x5027, 0x6d0013, 0x3030001,
0x251cc, 0x5027, 0x6d0013, 0x3030001,
0x2781c, 0x15bb1, 0x490025, 0x3030000,
0x2781c, 0x11c6b, 0x490025, 0x3030000,
0x15bb1, 0x11c6b, 0x490025, 0x3030000,
0x22cf3, 0x21b4c, 0x490025, 0x3030000,
0x22cf3, 0x11a7, 0x490025, 0x3030000,
0x21b4c, 0x11a7, 0x490025, 0x3030000,
0x21617, 0x12023, 0x7f0013, 0x3030000,
0x21617, 0xf5f4, 0x7f0013, 0x3030000,
0x12023, 0xf5f4, 0x7f0013, 0x3030000,
0x1fcdb, 0x18c7f, 0x7f0013, 0x3030000,
0x1fcdb, 0x705c, 0x7f0013, 0x3030000,
0x18c7f, 0x705c, 0x7f0013, 0x3030000,
0x1a695, 0xfb5e, 0x6d0013, 0x3030000,
0x1a695, 0xab37, 0x6d0013, 0x3030000,
0xfb5e, 0xab37, 0x6d0013, 0x3030000,
0x1905d, 0xf410, 0x490013, 0x3030001,
0x1905d, 0x9c4d, 0x490013, 0x3030001,
0xf410, 0x9c4d, 0x490013, 0x3030001,
0x17baf, 0x1636d, 0x6d0013, 0x3030000,
0x17baf, 0x1842, 0x6d0013, 0x3030000,
0x1636d, 0x1842, 0x6d0013, 0x3030000,
0x16555, 0x15515, 0x490013, 0x3030001,
0x16555, 0x1040, 0x490013, 0x3030001,
0x15515, 0x1040, 0x490013, 0x3030001,
0xe8ce, 0x7c87, 0x490013, 0x3030000,
0xe8ce, 0x6c47, 0x490013, 0x3030000,
0x7c87, 0x6c47, 0x490013, 0x3030000,
0xd6cf, 0xb98e, 0x490013, 0x3030000,
0xd6cf, 0x1d41, 0x490013, 0x3030000,
0xb98e, 0x1d41, 0x490013, 0x3030000,
0x90ec, 0x54cd, 0x250013, 0x3030001,
0x90ec, 0x3c1f, 0x250013, 0x3030001,
0x54cd, 0x3c1f, 0x250013, 0x3030001,
0x82c7, 0x78dc, 0x250013, 0x3030001,
0x82c7, 0x9eb, 0x250013, 0x3030001,
0x78dc, 0x9eb, 0x250013, 0x3030001,
0x53e1, 0x2ee6, 0x250013, 0x3030000,
0x53e1, 0x24fb, 0x250013, 0x3030000,
0x2ee6, 0x24fb, 0x250013, 0x3030000,
0x4c93, 0x4459, 0x250013, 0x3030000,
0x4c93, 0x83a, 0x250013, 0x3030000,
0x4459, 0x83a, 0x250013, 0x3030000};
int tsize=551; // prime look-up table size
int h,i,j,k,m;
int a,b,c,d;
int save[100];
FILE *Outfp;
Outfp = fopen("out18d.dat","w");
/*******************/
/* factor input */
/*******************/
for (h=0; h<insize; h+=3) {
/******************/
/* first pair */
/******************/
a=input[4*h];
b=input[4*h+1];
c=a+b;
d=a-b;
fprintf(Outfp," %#10x %d \n",input[4*h+2],
(unsigned char)(input[4*h+3]&0xff));
fprintf(Outfp," %#8x %#8x ",a,b);
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>a)
break;
if ((a/j)*j!=a)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
a=a/j;
if ((a/j)*j!=a)
break;
}
}
if (a!=1) {
save[m]=a;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
fprintf(Outfp," ");
if (b==1)
fprintf(Outfp,"%d",b);
else {
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>b)
break;
if ((b/j)*j!=b)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
b=b/j;
if ((b/j)*j!=b)
break;
}
}
if (b!=1) {
save[m]=b;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
}
fprintf(Outfp," ");
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>c)
break;
if ((c/j)*j!=c)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
c=c/j;
if ((c/j)*j!=c)
break;
}
}
if (c!=1) {
save[m]=c;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
fprintf(Outfp," ");
if (d==1)
fprintf(Outfp,"%d",d);
else {
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>d)
break;
if ((d/j)*j!=d)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
d=d/j;
if ((d/j)*j!=d)
break;
}
}
if (d!=1) {
save[m]=d;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
}
fprintf(Outfp,"\n");
/******************/
/* second pair */
/******************/
a=input[4*h];
b=a-input[4*h+1];
if (a<b) {
c=a;
a=b;
b=c;
}
c=a+b;
d=a-b;
fprintf(Outfp," %#8x %#8x ",a,b);
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>a)
break;
if ((a/j)*j!=a)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
a=a/j;
if ((a/j)*j!=a)
break;
}
}
if (a!=1) {
save[m]=a;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
fprintf(Outfp," ");
if (b==1)
fprintf(Outfp,"%d",b);
else {
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>b)
break;
if ((b/j)*j!=b)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
b=b/j;
if ((b/j)*j!=b)
break;
}
}
if (b!=1) {
save[m]=b;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
}
fprintf(Outfp," ");
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>c)
break;
if ((c/j)*j!=c)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
c=c/j;
if ((c/j)*j!=c)
break;
}
}
if (c!=1) {
save[m]=c;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
fprintf(Outfp," ");
if (d==1)
fprintf(Outfp,"%d",d);
else {
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>d)
break;
if ((d/j)*j!=d)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
d=d/j;
if ((d/j)*j!=d)
break;
}
}
if (d!=1) {
save[m]=d;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
}
fprintf(Outfp,"\n");
/******************/
/* third pair */
/******************/
b=input[4*h+1];
a=input[4*h]-b;
if (a<b) {
c=a;
a=b;
b=c;
}
c=a-b; // switch a-b and a+b
d=a+b; //
fprintf(Outfp," %#8x %#8x ",a,b);
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>a)
break;
if ((a/j)*j!=a)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
a=a/j;
if ((a/j)*j!=a)
break;
}
}
if (a!=1) {
save[m]=a;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
fprintf(Outfp," ");
if (b==1)
fprintf(Outfp,"%d",b);
else {
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>b)
break;
if ((b/j)*j!=b)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
b=b/j;
if ((b/j)*j!=b)
break;
}
}
if (b!=1) {
save[m]=b;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
}
fprintf(Outfp," ");
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>c)
break;
if ((c/j)*j!=c)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
c=c/j;
if ((c/j)*j!=c)
break;
}
}
if (c!=1) {
save[m]=c;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
fprintf(Outfp," ");
if (d==1)
fprintf(Outfp,"%d",d);
else {
m=0;
for (i=0; i<tsize; i++) {
j=table[i];
if (j*j>d)
break;
if ((d/j)*j!=d)
continue;
for (k=0; k<100; k++) {
save[m]=j;
m=m+1;
d=d/j;
if ((d/j)*j!=d)
break;
}
}
if (d!=1) {
save[m]=d;
m=m+1;
}
if (m==1)
fprintf(Outfp,"%d",save[0]);
else {
for (i=0; i<m-1; i++) {
fprintf(Outfp,"%d*",save[i]);
}
fprintf(Outfp,"%d",save[m-1]);
}
}
fprintf(Outfp,"\n");
fprintf(Outfp,"\n");
}
fprintf(Outfp,"\n");
fclose(Outfp);
return(0);
}