'#include "R:\XRDSF-ROWLEM-SE05479\Rowles\topas\row119.inc" /*#ifndef STANDARD_MACROS #define STANDARD_MACROS #include local.inc macro Pi { 3.14159265358979 } macro Deg { 0.01745329251994 } macro Deg_on_2 { 0.00872664625997 } macro Rad { 57.2957795130823 } */ /* Throw it all at them prm lor_const 0.1 min 0.0001 prm lor_sin 0.1 min 0.0001 prm lor_cos 0.1 min 0.0001 prm lor_tan 0.1 min 0.0001 prm lor_1_sin 0.1 min 0.0001 prm lor_1_cos 0.1 min 0.0001 prm lor_1_tan 0.1 min 0.0001 prm gauss_const 0.1 min 0.0001 prm gauss_sin 0.1 min 0.0001 prm gauss_cos 0.1 min 0.0001 prm gauss_tan 0.1 min 0.0001 prm gauss_1_sin 0.1 min 0.0001 prm gauss_1_cos 0.1 min 0.0001 prm gauss_1_tan 0.1 min 0.0001 prm hat_const 0.1 min 0.0001 prm hat_sin 0.1 min 0.0001 prm hat_cos 0.1 min 0.0001 prm hat_tan 0.1 min 0.0001 prm hat_1_sin 0.1 min 0.0001 prm hat_1_cos 0.1 min 0.0001 prm hat_1_tan 0.1 min 0.0001 prm circles_neg_const -0.1 max -0.0001 prm circles_neg_sin -0.1 max -0.0001 prm circles_neg_cos -0.1 max -0.0001 prm circles_neg_tan -0.1 max -0.0001 prm circles_neg_1_sin -0.1 max -0.0001 prm circles_neg_1_cos -0.1 max -0.0001 prm circles_neg_1_tan -0.1 max -0.0001 prm circles_pos_const 0.1 min 0.0001 prm circles_pos_sin 0.1 min 0.0001 prm circles_pos_cos 0.1 min 0.0001 prm circles_pos_tan 0.1 min 0.0001 prm circles_pos_1_sin 0.1 min 0.0001 prm circles_pos_1_cos 0.1 min 0.0001 prm circles_pos_1_tan 0.1 min 0.0001 prm exp_neg_const -0.1 max -0.0001 prm exp_neg_sin -0.1 max -0.0001 prm exp_neg_cos -0.1 max -0.0001 prm exp_neg_tan -0.1 max -0.0001 prm exp_neg_1_sin -0.1 max -0.0001 prm exp_neg_1_cos -0.1 max -0.0001 prm exp_neg_1_tan -0.1 max -0.0001 prm exp_pos_const 0.1 min 0.0001 prm exp_pos_sin 0.1 min 0.0001 prm exp_pos_cos 0.1 min 0.0001 prm exp_pos_tan 0.1 min 0.0001 prm exp_pos_1_sin 0.1 min 0.0001 prm exp_pos_1_cos 0.1 min 0.0001 prm exp_pos_1_tan 0.1 min 0.0001 prm oneonx_neg_const -0.1 max -0.0001 prm oneonx_neg_sin -0.1 max -0.0001 prm oneonx_neg_cos -0.1 max -0.0001 prm oneonx_neg_tan -0.1 max -0.0001 prm oneonx_neg_1_sin -0.1 max -0.0001 prm oneonx_neg_1_cos -0.1 max -0.0001 prm oneonx_neg_1_tan -0.1 max -0.0001 prm oneonx_pos_const 0.1 min 0.0001 prm oneonx_pos_sin 0.1 min 0.0001 prm oneonx_pos_cos 0.1 min 0.0001 prm oneonx_pos_tan 0.1 min 0.0001 prm oneonx_pos_1_sin 0.1 min 0.0001 prm oneonx_pos_1_cos 0.1 min 0.0001 prm oneonx_pos_1_tan 0.1 min 0.0001 lor_fwhm = lor_const; lor_fwhm = lor_sin Sin(Th); lor_fwhm = lor_cos Cos(Th); lor_fwhm = lor_tan Tan(Th); lor_fwhm = lor_1_sin / Sin(Th); lor_fwhm = lor_1_cos / Cos(Th); lor_fwhm = lor_1_tan / Tan(Th); gauss_fwhm = gauss_const ; gauss_fwhm = gauss_sin Sin(Th); gauss_fwhm = gauss_cos Cos(Th); gauss_fwhm = gauss_tan Tan(Th); gauss_fwhm = gauss_1_sin / Sin(Th); gauss_fwhm = gauss_1_cos / Cos(Th); gauss_fwhm = gauss_1_tan / Tan(Th); hat = hat_const ; hat = hat_sin Sin(Th); hat = hat_cos Cos(Th); hat = hat_tan Tan(Th); hat = hat_1_sin / Sin(Th); hat = hat_1_cos / Cos(Th); hat = hat_1_tan / Tan(Th); circles_conv = circles_neg_const ; circles_conv = circles_neg_sin Sin(Th); circles_conv = circles_neg_cos Cos(Th); circles_conv = circles_neg_tan Tan(Th); circles_conv = circles_neg_1_sin / Sin(Th); circles_conv = circles_neg_1_cos / Cos(Th); circles_conv = circles_neg_1_tan / Tan(Th); circles_conv = circles_pos_const ; circles_conv = circles_pos_sin Sin(Th); circles_conv = circles_pos_cos Cos(Th); circles_conv = circles_pos_tan Tan(Th); circles_conv = circles_pos_1_sin / Sin(Th); circles_conv = circles_pos_1_cos / Cos(Th); circles_conv = circles_pos_1_tan / Tan(Th); exp_conv_const = exp_neg_const ; exp_conv_const = exp_neg_sin Sin(Th); exp_conv_const = exp_neg_cos Cos(Th); exp_conv_const = exp_neg_tan Tan(Th); exp_conv_const = exp_neg_1_sin / Sin(Th); exp_conv_const = exp_neg_1_cos / Cos(Th); exp_conv_const = exp_neg_1_tan / Tan(Th); exp_conv_const = exp_pos_const ; exp_conv_const = exp_pos_sin Sin(Th); exp_conv_const = exp_pos_cos Cos(Th); exp_conv_const = exp_pos_tan Tan(Th); exp_conv_const = exp_pos_1_sin / Sin(Th); exp_conv_const = exp_pos_1_cos / Cos(Th); exp_conv_const = exp_pos_1_tan / Tan(Th); one_on_x_conv = oneonx_neg_const ; one_on_x_conv = oneonx_neg_sin Sin(Th); one_on_x_conv = oneonx_neg_cos Cos(Th); one_on_x_conv = oneonx_neg_tan Tan(Th); one_on_x_conv = oneonx_neg_1_sin / Sin(Th); one_on_x_conv = oneonx_neg_1_cos / Cos(Th); one_on_x_conv = oneonx_neg_1_tan / Tan(Th); one_on_x_conv = oneonx_pos_const ; one_on_x_conv = oneonx_pos_sin Sin(Th); one_on_x_conv = oneonx_pos_cos Cos(Th); one_on_x_conv = oneonx_pos_tan Tan(Th); one_on_x_conv = oneonx_pos_1_sin / Sin(Th); one_on_x_conv = oneonx_pos_1_cos / Cos(Th); one_on_x_conv = oneonx_pos_1_tan / Tan(Th); */ '***************************************************************************************** '***************************************************************************************** 'TEMPORARY MACROS '{{{ macro AS_instrument_LaB6_080606_0306 { LP_Factor(89) Rp 760 Rs 760 lam ymin_on_ymax 0.0001 la 1 lo 1.000907` min 1.0005 max 1.002 lh 1e-005 '1.000891 x_calculation_step 0.002 User_Defined_Dependence_Convolution(exp_conv_const , 1/100 , , 0.68668` min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , 1/100 , , 0.03322` min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Sin(2 Th)/100 , , 2.15572` min 0 max 3) User_Defined_Dependence_Convolution(one_on_x_conv , Sin(2 Th)/100 , , -0.21463` max 0 min -4) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Sin(Th))/100 , , -0.05818` max 0 min -2) User_Defined_Dependence_Convolution(circles_conv , (1/Sin(2 Th))/100 , , -0.15087` max 0 min -2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Sin(2 Th))/100 , , -0.11571` max 0 min -2) User_Defined_Dependence_Convolution(exp_conv_const , Cos(Th)/100 , , 0.63098` min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , Cos(Th)/100 , , 0.12032` min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Cos(2 Th)/100 , , 0.85903` min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , Cos(2 Th)/100 , , 0.29394` min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Cos(Th))/100 , , 0.36176` min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , (1/Cos(Th))/100 , , 0.00256` min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Cos(Th))/100 , , -1.54713` max 0 min -2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Cos(2 Th))/100 , , 0.38243` min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , Tan(2 Th)/100 , , -0.29332` max 0 min -2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Tan(Th))/100 , , 0.07518` min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Tan(Th))/100 , , -0.05735` max 0 min -2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Tan(2 Th))/100 , , 0.17936` min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Tan(2 Th))/100 , , -0.10308` max 0 min -2) } macro AS_instrument_LaB6_080608_0220 { LP_Factor(89) Rp 760 Rs 760 lam ymin_on_ymax 0.0001 la 1 lo 1.000845 min 1.0006 max 1.001 lh 1e-005 '1.000891 x_calculation_step 0.002 User_Defined_Dependence_Convolution(exp_conv_const , 1/100 , , 0.72053 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , 1/100 , , 0.34244 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Th/100 , , 2.08103 min 0 max 4) User_Defined_Dependence_Convolution(circles_conv , Th/100 , , 0.75162 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Sin(Th)/100 , , 2.27213 min 0 max 4) User_Defined_Dependence_Convolution(circles_conv , Sin(Th)/100 , , 0.86039 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Sin(2 Th)/100 , , 1.45996 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , Sin(2 Th)/100 , , 0.54225 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , Sin(2 Th)/100 , , -1.96315 max 0 min -4) User_Defined_Dependence_Convolution(exp_conv_const , (1/Sin(Th))/100 , , 0.01224 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Sin(Th))/100 , , -0.00427 max 0 min -2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Sin(2 Th))/100 , , 0.03510 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Sin(2 Th))/100 , , -0.39616 max 0 min -2) User_Defined_Dependence_Convolution(exp_conv_const , Cos(Th)/100 , , 0.79606 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , Cos(Th)/100 , , 0.38291 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Cos(2 Th)/100 , , 0.95928 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , Cos(2 Th)/100 , , 0.57612 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Cos(Th))/100 , , 0.61615 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , (1/Cos(Th))/100 , , 0.29749 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Tan(Th)/100 , , 1.63448 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Tan(Th))/100 , , 0.01857 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Tan(Th))/100 , , -0.00779 max 0 min -2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Tan(2 Th))/100 , , 0.02250 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Tan(2 Th))/100 , , -0.07065 max 0 min -2) } macro AS_instrument_LaB6_080608_1717 { LP_Factor(89) Rp 760 Rs 760 lam ymin_on_ymax 0.0001 la 1 lo 1.000887 min 1.0006 max 1.001 lh 1e-005 '1.000891 x_calculation_step 0.002 User_Defined_Dependence_Convolution(exp_conv_const , 1/100 , , 0.76933 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , 1/100 , , 0.17627 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Th/100 , , 1.33112 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Sin(Th)/100 , , 1.53739 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Sin(2 Th)/100 , , 1.57983 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , Sin(2 Th)/100 , , 0.09045 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Sin(Th))/100 , , 0.01275 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Sin(Th))/100 , , -0.00270 max 0 min -2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Sin(2 Th))/100 , , 0.00271 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Cos(Th)/100 , , 0.83884 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , Cos(Th)/100 , , 0.23149 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Cos(2 Th)/100 , , 1.18958 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , Cos(2 Th)/100 , , 0.44110 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , Cos(2 Th)/100 , , 0.01026 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Cos(Th))/100 , , 0.63660 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , (1/Cos(Th))/100 , , 0.11172 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Cos(Th))/100 , , -1.55438 max 0 min -2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Cos(2 Th))/100 , , 0.00446 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Cos(2 Th))/100 , , -0.00245 max 0 min -2) User_Defined_Dependence_Convolution(exp_conv_const , Tan(Th)/100 , , 0.73948 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Tan(Th)/100 , , -0.00050 max 0 min -2) User_Defined_Dependence_Convolution(exp_conv_const , Tan(2 Th)/100 , , -0.06663 max 0 min -2) User_Defined_Dependence_Convolution(circles_conv , Tan(2 Th)/100 , , -0.19791 max 0 min -2) User_Defined_Dependence_Convolution(one_on_x_conv , Tan(2 Th)/100 , , -0.04478 max 0 min -2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Tan(Th))/100 , , 0.01781 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Tan(Th))/100 , , -0.00731 max 0 min -2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Tan(2 Th))/100 , , 0.03056 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Tan(2 Th))/100 , , -0.27780 max 0 min -2) } macro AS_instrument_080607_1715 { LP_Factor(89) Rp 760 Rs 760 lam ymin_on_ymax 0.0001 la 1 lo 1.000893` min 1.0006 max 1.001 lh 1e-005 '1.000891 x_calculation_step 0.002 User_Defined_Dependence_Convolution(exp_conv_const , 1/100 , , 0.54938 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , 1/100 , , 0.36011 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , 1/100 , , 0.00643 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , 1/100 , , -0.95693 max 0 min -2) User_Defined_Dependence_Convolution(exp_conv_const , Th/100 , , 1.44801 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , Th/100 , , 0.12567 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Sin(Th) / 100 , , 1.69416 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , Sin(Th) / 100 , , 0.29570 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Sin(2 Th) / 100 , , 1.73995 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , Sin(2 Th) / 100 , , 0.55412 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , Sin(2 Th) / 100 , , -1.92184 max 0 min -2) User_Defined_Dependence_Convolution(circles_conv , 1/Sin(Th) / 100 , , -0.08648 max 0 min -2) User_Defined_Dependence_Convolution(exp_conv_const , 1/Sin(2 Th) / 100 , , 0.21302 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , 1/Sin(2 Th) / 100 , , -0.17124 max 0 min -2) User_Defined_Dependence_Convolution(one_on_x_conv , 1/Sin(2 Th) / 100 , , -0.06322 max 0 min -2) User_Defined_Dependence_Convolution(exp_conv_const , Cos(Th) / 100 , , 0.62575 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , Cos(Th) / 100 , , 0.39429 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Cos(2 Th) / 100 , , 1.00146 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , Cos(2 Th) / 100 , , 0.50760 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , Cos(2 Th) / 100 , , 0.12764 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , 1/Cos(Th) / 100 , , 0.58660 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , 1/Cos(Th) / 100 , , 0.29438 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , 1/Cos(2 Th) / 100 , , 0.21690 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , 1/Cos(2 Th) / 100 , , -0.21084 max 0 min -2) User_Defined_Dependence_Convolution(exp_conv_const , Tan(Th) / 100 , , 0.67403 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , 1/Tan(Th) / 100 , , 0.10258 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , 1/Tan(Th) / 100 , , -0.10857 max 0 min -2) User_Defined_Dependence_Convolution(circles_conv , 1/Tan(Th) / 100 , , -0.02926 max 0 min -2) User_Defined_Dependence_Convolution(one_on_x_conv , 1/Tan(Th) / 100 , , -0.03450 max 0 min -2) User_Defined_Dependence_Convolution(exp_conv_const , 1/Tan(2 Th) / 100 , , 0.23409 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , 1/Tan(2 Th) / 100 , , -0.07561 max 0 min -2) User_Defined_Dependence_Convolution(circles_conv , 1/Tan(2 Th) / 100 , , -0.22368 max 0 min -2) User_Defined_Dependence_Convolution(one_on_x_conv , 1/Tan(2 Th) / 100 , , -0.07468 max 0 min -2) } 'I refined all of these on all of the LaB6 samples from 2008 macro AS_instrument_from_LaB6_2008 { LP_Factor( 89) Rp 760 Rs 760 lam ymin_on_ymax 0.001 la 1 lo 1 lh 0.001 x_calculation_step 0.002 prm !a1 56.98492 min -100 max 100 prm !a2 -39.16083 min -100 max 100 prm !a3 98.43364 min -100 max 100 th2_offset = (a1/1000)*Th + (a2/1000)*Th^2 + (a3/1000)*Th^3; User_Defined_Dependence_Convolution(exp_conv_const, , , 0.00115 min 0 max 0.02) User_Defined_Dependence_Convolution(exp_conv_const, Cos(Th) , , 0.00128 min 0 max 0.02) User_Defined_Dependence_Convolution(exp_conv_const, Cos(2 Th) , , 0.00839 min 0 max 0.02) User_Defined_Dependence_Convolution(exp_conv_const, 1/Cos(Th) , , 0.00668 min 0 max 0.02) User_Defined_Dependence_Convolution(exp_conv_const, Tan(Th) , , 0.01967 min 0 max 0.02) User_Defined_Dependence_Convolution(exp_conv_const, 1/Tan(Th) , , 0.00011 min 0 max 0.02) User_Defined_Dependence_Convolution(exp_conv_const, 1/Tan(2 Th), , 0.00177 min 0 max 0.02) User_Defined_Dependence_Convolution(exp_conv_const, Sin(Th) , , 0.00241 min 0 max 0.02) User_Defined_Dependence_Convolution(exp_conv_const, Sin(2 Th) , , 0.00168 min 0 max 0.02) User_Defined_Dependence_Convolution(exp_conv_const, 1/Sin(Th) , , 0.00011 min 0 max 0.02) User_Defined_Dependence_Convolution(exp_conv_const, 1/Sin(2 Th), , 0.00178 min 0 max 0.02) User_Defined_Dependence_Convolution(circles_conv, Cos(Th) , , 0.00295 min 0 max 0.02) User_Defined_Dependence_Convolution(circles_conv, Cos(2 Th) , , 0.00364 min 0 max 0.02) User_Defined_Dependence_Convolution(circles_conv, 1/Cos(Th) , , 0.00261 min 0 max 0.02) User_Defined_Dependence_Convolution(circles_conv, 1/Cos(2 Th), , 0.00121 min 0 max 0.02) User_Defined_Dependence_Convolution(circles_conv, Tan(Th) , , 0.00894 min 0 max 0.02) User_Defined_Dependence_Convolution(circles_conv, Tan(2 Th) , , 0.00073 min 0 max 0.02) User_Defined_Dependence_Convolution(circles_conv, 1/Tan(Th) , , 0.00026 min 0 max 0.02) User_Defined_Dependence_Convolution(circles_conv, 1/Tan(2 Th), , 0.00004 min 0 max 0.02) User_Defined_Dependence_Convolution(circles_conv, Sin(Th) , , 0.01061 min 0 max 0.02) User_Defined_Dependence_Convolution(circles_conv, Sin(2 Th) , , 0.00613 min 0 max 0.02) User_Defined_Dependence_Convolution(circles_conv, 1/Sin(Th) , , 0.00002 min 0 max 0.02) User_Defined_Dependence_Convolution(gauss_fwhm, Cos(2 Th) , , 0.00766 min 0 max 0.02) User_Defined_Dependence_Convolution(gauss_fwhm, 1/Tan(Th) , , 0.00074 min 0 max 0.02) User_Defined_Dependence_Convolution(one_on_x_conv, , , -0.00015 max 0 min -0.02) User_Defined_Dependence_Convolution(one_on_x_conv, Cos(Th) , , -0.00435 max 0 min -0.02) User_Defined_Dependence_Convolution(one_on_x_conv, Cos(2 Th) , , -0.00462 max 0 min -0.02) User_Defined_Dependence_Convolution(one_on_x_conv, Tan(Th) , , -0.01935 max 0 min -0.02) User_Defined_Dependence_Convolution(one_on_x_conv, Tan(2 Th) , , -0.00001 max 0 min -0.02) User_Defined_Dependence_Convolution(one_on_x_conv, 1/Tan(Th) , , -0.00041 max 0 min -0.02) User_Defined_Dependence_Convolution(one_on_x_conv, 1/Tan(2 Th), , -0.00099 max 0 min -0.02) User_Defined_Dependence_Convolution(one_on_x_conv, Sin(2 Th) , , -0.00905 max 0 min -0.02) User_Defined_Dependence_Convolution(one_on_x_conv, 1/Sin(Th) , , -0.00038 max 0 min -0.02) User_Defined_Dependence_Convolution(one_on_x_conv, 1/Sin(2 Th), , -0.00071 max 0 min -0.02) User_Defined_Dependence_Convolution(circles_conv, Cos(Th) , , -0.00001 max 0 min -0.02) User_Defined_Dependence_Convolution(circles_conv, Cos(2 Th) , , -0.00997 max 0 min -0.02) User_Defined_Dependence_Convolution(circles_conv, 1/Cos(Th) , , -0.00028 max 0 min -0.02) User_Defined_Dependence_Convolution(circles_conv, 1/Tan(Th) , , -0.00021 max 0 min -0.02) User_Defined_Dependence_Convolution(circles_conv, 1/Tan(2 Th), , -0.00068 max 0 min -0.02) User_Defined_Dependence_Convolution(circles_conv, Sin(2 Th) , , -0.02000 max 0 min -0.02) User_Defined_Dependence_Convolution(circles_conv, 1/Sin(Th) , , -0.00010 max 0 min -0.02) } 'I refined all of these on LaB6_071123_0041 macro AS_instrument_from_LaB6 { LP_Factor( 89) Rp 760 Rs 760 User_Defined_Dependence_Convolution(exp_conv_const, Sin(2 Th), , -0.04643 min =-0.05; max =-0.00001;) User_Defined_Dependence_Convolution(exp_conv_const, 1/Sin(Th), , -0.00033 min =-0.05; max =-0.00001;) User_Defined_Dependence_Convolution(exp_conv_const, 1/Sin(2 Th), , -0.00746 min =-0.05; max =-0.00001;) User_Defined_Dependence_Convolution(exp_conv_const, Tan(2 Th), , -0.00315 min =-0.05; max =-0.00001;) User_Defined_Dependence_Convolution(exp_conv_const, 1/Tan(Th), , -0.00041 min =-0.05; max =-0.00001;) User_Defined_Dependence_Convolution(exp_conv_const, 1/Tan(2 Th), , -0.00095 min =-0.05; max =-0.00001;) User_Defined_Dependence_Convolution(circles_conv, 1/Cos(2 Th), , -0.00019 min =-0.05; max =-0.00001;) User_Defined_Dependence_Convolution(circles_conv, 1/Sin(Th), , -0.0001 min =-0.05; max =-0.00001;) User_Defined_Dependence_Convolution(circles_conv, 1/Sin(2 Th), , -0.00013 min =-0.05; max =-0.00001;) User_Defined_Dependence_Convolution(circles_conv, Tan(Th), , -1e-005 min =-0.05; max =-0.00001;) User_Defined_Dependence_Convolution(circles_conv, Tan(2 Th), , -0.00166 min =-0.05; max =-0.00001;) User_Defined_Dependence_Convolution(circles_conv, 1/Tan(2 Th), , -0.00018 min =-0.05; max =-0.00001;) User_Defined_Dependence_Convolution(one_on_x_conv, 1/Cos(2 Th), , -0.00014 min =-0.05; max =-0.00001;) User_Defined_Dependence_Convolution(one_on_x_conv, 1/Sin(Th), , -3e-005 min =-0.05; max =-0.00001;) User_Defined_Dependence_Convolution(one_on_x_conv, Tan(2 Th), , -0.00084 min =-0.05; max =-0.00001;) User_Defined_Dependence_Convolution(one_on_x_conv, 1/Tan(Th), , -3e-005 min =-0.05; max =-0.00001;) User_Defined_Dependence_Convolution(exp_conv_const, 1/Cos(2 Th), , 5e-005 min =0.00001; max =0.05;) User_Defined_Dependence_Convolution(exp_conv_const, Sin(Th), , 0.00458 min =0.00001; max =0.05;) User_Defined_Dependence_Convolution(exp_conv_const, Sin(2 Th), , 0.04405 min =0.00001; max =0.05;) User_Defined_Dependence_Convolution(exp_conv_const, Tan(Th), , 0.00227 min =0.00001; max =0.05;) User_Defined_Dependence_Convolution(exp_conv_const, Tan(2 Th), , 0.00148 min =0.00001; max =0.05;) User_Defined_Dependence_Convolution(exp_conv_const, 1/Tan(2 Th), , 0.00509 min =0.00001; max =0.05;) User_Defined_Dependence_Convolution(circles_conv, 1/Cos(2 Th), , 5e-005 min =0.00001; max =0.05;) User_Defined_Dependence_Convolution(circles_conv, Tan(Th), , 0.00119 min =0.00001; max =0.05;) User_Defined_Dependence_Convolution(circles_conv, Tan(2 Th), , 0.00173 min =0.00001; max =0.05;) User_Defined_Dependence_Convolution(one_on_x_conv, Cos(Th), , 0.00016 min =0.00001; max =0.05;) User_Defined_Dependence_Convolution(one_on_x_conv, Cos(2 Th), , 0.00039 min =0.00001; max =0.05;) User_Defined_Dependence_Convolution(one_on_x_conv, 1/Cos(Th), , 8e-005 min =0.00001; max =0.05;) User_Defined_Dependence_Convolution(one_on_x_conv, 1/Cos(2 Th), , 0.00092 min =0.00001; max =0.05;) User_Defined_Dependence_Convolution(one_on_x_conv, Tan(2 Th), , 0.00012 min =0.00001; max =0.05;) lam ymin_on_ymax 0.0005 la 1 lo 1.0002 lh 0.0001 x_calculation_step 0.002 } '}}} '***************************************************************************************** '***************************************************************************************** '***************************************************************************************** 'macros for iron ore round robin macro lab_instrument { lam ymin_on_ymax 0.0001 Lam_recs { 0.378 1.7889847 0.4633522 0.144 1.7892524 0.6958819 0.127 1.7896946 1.1767380 0.088 1.7888515 0.2085420 0.197 1.7927905 0.6237179 0.095 1.7930637 0.7190761 0.050 1.7934738 1.1578452 } start_X 10 finish_X 121 Radius(173) Full_Axial_Model( 12, 15, 12,2.5,2.5) lpsd_th2_angular_range_degrees 2.944 lpsd_equitorial_divergence_degrees 0.298 LP_Factor(0) Tube_Tails( , 0.03828, , -0.09614, , 1.07938, , 0.00254) } /* A macro to set or refine on the wt% value of a phase The first phase must refine a scale parameter. The remaining phases must refine a weight percentage value. You must define the scale factor as "s1". eg prm s1 0.00032 You must define the weight percentages as "w2", w3",... eg prm w2 78 max 100 scale factors and weight percentages can be fixed or refined. The weight percentage of the first phase is set by difference 'p denotes the total number of phases 'n denotes which phase of the p phases you're referencing (eg 1 of 3, 4 of 5 --> n of p) */ macro wt_dets(n,p, sc) { prm m##n = Get(cell_mass) Get(cell_volume); prm x##n = w##n / (m##n (100 - w##n)); 'define scale prms {{{ #m_if p == 2; 'there are 2 phases in total #m_if n == 1; 'do nothing, as s1 should already be defined elsewhere #m_elseif n == 2; prm s##n = x2*s1*m1; #m_endif #m_elseif p == 3; 'there are three phases in total #m_if n == 1; prm m_denom = (m2*m3*x2*x3-1); #m_elseif n == 2; prm s##n = -m1*s1*x2*(m3*x3+1)/m_denom; #m_elseif n == 3; prm s##n = -m1*s1*x3*(m2*x2+1)/m_denom; #m_endif #m_elseif p == 4; #m_if n == 1; prm m_denom = (2*m2*m3*m4*x2*x3*x4+m2*m3*x2*x3+m2*m4*x2*x4+m3*m4*x3*x4-1); #m_elseif n == 2; prm s##n = -m1*s1*x2*(m3*m4*x3*x4+m3*x3+m4*x4+1)/m_denom; #m_elseif n == 3; prm s##n = -m1*s1*x3*(m2*m4*x2*x4+m2*x2+m4*x4+1)/m_denom; #m_elseif n == 4; prm s##n = -m1*s1*x4*(m2*m3*x2*x3+m2*x2+m3*x3+1)/m_denom; #m_endif #m_elseif p == 5; #m_if n == 1; prm m_denom = (3*m2*m3*m4*m5*x2*x3*x4*x5+2*m2*m3*m4*x2*x3*x4+2*m2*m3*m5*x2*x3*x5+2*m2*m4*m5*x2*x4*x5+2*m3*m4*m5*x3*x4*x5+m2*m3*x2*x3+m2*m4*x2*x4+m2*m5*x2*x5+m3*m4*x3*x4+m3*m5*x3*x5+m4*m5*x4*x5-1); #m_elseif n == 2; prm s##n = -m1*s1*x2*(m3*m4*m5*x3*x4*x5+m3*m4*x3*x4+m3*m5*x3*x5+m4*m5*x4*x5+m3*x3+m4*x4+m5*x5+1)/m_denom; #m_elseif n == 3; prm s##n = -m1*s1*x3*(m2*m4*m5*x2*x4*x5+m2*m4*x2*x4+m2*m5*x2*x5+m4*m5*x4*x5+m2*x2+m4*x4+m5*x5+1)/m_denom; #m_elseif n == 4; prm s##n = -m1*s1*x4*(m2*m3*m5*x2*x3*x5+m2*m3*x2*x3+m2*m5*x2*x5+m3*m5*x3*x5+m2*x2+m3*x3+m5*x5+1)/m_denom; #m_elseif n == 5; prm s##n = -m1*s1*x5*(m2*m3*m4*x2*x3*x4+m2*m3*x2*x3+m2*m4*x2*x4+m3*m4*x3*x4+m2*x2+m3*x3+m4*x4+1)/m_denom; #m_endif #m_elseif p == 6; #m_if n == 1; prm m_denom = (4*m2*m3*m4*m5*m6*x2*x3*x4*x5*x6+3*m2*m3*m4*m5*x2*x3*x4*x5+3*m2*m3*m4*m6*x2*x3*x4*x6+3*m2*m3*m5*m6*x2*x3*x5*x6+3*m2*m4*m5*m6*x2*x4*x5*x6+3*m3*m4*m5*m6*x3*x4*x5*x6+2*m2*m3*m4*x2*x3*x4+2*m2*m3*m5*x2*x3*x5+2*m2*m3*m6*x2*x3*x6+2*m2*m4*m5*x2*x4*x5+2*m2*m4*m6*x2*x4*x6+2*m2*m5*m6*x2*x5*x6+2*m3*m4*m5*x3*x4*x5+2*m3*m4*m6*x3*x4*x6+2*m3*m5*m6*x3*x5*x6+2*m4*m5*m6*x4*x5*x6+m2*m3*x2*x3+m2*m4*x2*x4+m2*m5*x2*x5+m2*m6*x2*x6+m3*m4*x3*x4+m3*m5*x3*x5+m3*m6*x3*x6+m4*m5*x4*x5+m4*m6*x4*x6+m5*m6*x5*x6-1); #m_elseif n == 2; prm s##n = -m1*s1*x2*(m3*m4*m5*m6*x3*x4*x5*x6+m3*m4*m5*x3*x4*x5+m3*m4*m6*x3*x4*x6+m3*m5*m6*x3*x5*x6+m4*m5*m6*x4*x5*x6+m3*m4*x3*x4+m3*m5*x3*x5+m3*m6*x3*x6+m4*m5*x4*x5+m4*m6*x4*x6+m5*m6*x5*x6+m3*x3+m4*x4+m5*x5+m6*x6+1)/m_denom; #m_elseif n == 3; prm s##n = -s1*m1*x3*(m2*m4*m6*x2*x4*x6+m2*m4*x2*x4+m2*m6*x2*x6+m4*m6*x4*x6+m2*x2+m4*x4+m6*x6+1)*(m5*x5+1)/m_denom; #m_elseif n == 4; prm s##n = -m1*s1*x4*(m2*m3*m5*m6*x2*x3*x5*x6+m2*m3*m5*x2*x3*x5+m2*m3*m6*x2*x3*x6+m2*m5*m6*x2*x5*x6+m3*m5*m6*x3*x5*x6+m2*m3*x2*x3+m2*m5*x2*x5+m2*m6*x2*x6+m3*m5*x3*x5+m3*m6*x3*x6+m5*m6*x5*x6+m2*x2+m3*x3+m5*x5+m6*x6+1)/m_denom; #m_elseif n == 5; prm s##n = -m1*s1*x5*(m2*m3*m4*m6*x2*x3*x4*x6+m2*m3*m4*x2*x3*x4+m2*m3*m6*x2*x3*x6+m2*m4*m6*x2*x4*x6+m3*m4*m6*x3*x4*x6+m2*m3*x2*x3+m2*m4*x2*x4+m2*m6*x2*x6+m3*m4*x3*x4+m3*m6*x3*x6+m4*m6*x4*x6+m2*x2+m3*x3+m4*x4+m6*x6+1)/m_denom; #m_elseif n == 6; prm s##n = -m1*s1*x6*(m2*m3*m4*m5*x2*x3*x4*x5+m2*m3*m4*x2*x3*x4+m2*m3*m5*x2*x3*x5+m2*m4*m5*x2*x4*x5+m3*m4*m5*x3*x4*x5+m2*m3*x2*x3+m2*m4*x2*x4+m2*m5*x2*x5+m3*m4*x3*x4+m3*m5*x3*x5+m4*m5*x4*x5+m2*x2+m3*x3+m4*x4+m5*x5+1)/m_denom; #m_endif #m_elseif p == 7; #m_if n == 1; prm m_denom = (5*m2*m3*m4*m5*m6*m7*x2*x3*x4*x5*x6*x7+4*m2*m3*m4*m5*m6*x2*x3*x4*x5*x6+4*m2*m3*m4*m5*m7*x2*x3*x4*x5*x7+4*m2*m3*m4*m6*m7*x2*x3*x4*x6*x7+4*m2*m3*m5*m6*m7*x2*x3*x5*x6*x7+4*m2*m4*m5*m6*m7*x2*x4*x5*x6*x7+4*m3*m4*m5*m6*m7*x3*x4*x5*x6*x7+3*m2*m3*m4*m5*x2*x3*x4*x5+3*m2*m3*m4*m6*x2*x3*x4*x6+3*m2*m3*m4*m7*x2*x3*x4*x7+3*m2*m3*m5*m6*x2*x3*x5*x6+3*m2*m3*m5*m7*x2*x3*x5*x7+3*m2*m3*m6*m7*x2*x3*x6*x7+3*m2*m4*m5*m6*x2*x4*x5*x6+3*m2*m4*m5*m7*x2*x4*x5*x7+3*m2*m4*m6*m7*x2*x4*x6*x7+3*m2*m5*m6*m7*x2*x5*x6*x7+3*m3*m4*m5*m6*x3*x4*x5*x6+3*m3*m4*m5*m7*x3*x4*x5*x7+3*m3*m4*m6*m7*x3*x4*x6*x7+3*m3*m5*m6*m7*x3*x5*x6*x7+3*m4*m5*m6*m7*x4*x5*x6*x7+2*m2*m3*m4*x2*x3*x4+2*m2*m3*m5*x2*x3*x5+2*m2*m3*m6*x2*x3*x6+2*m2*m3*m7*x2*x3*x7+2*m2*m4*m5*x2*x4*x5+2*m2*m4*m6*x2*x4*x6+2*m2*m4*m7*x2*x4*x7+2*m2*m5*m6*x2*x5*x6+2*m2*m5*m7*x2*x5*x7+2*m2*m6*m7*x2*x6*x7+2*m3*m4*m5*x3*x4*x5+2*m3*m4*m6*x3*x4*x6+2*m3*m4*m7*x3*x4*x7+2*m3*m5*m6*x3*x5*x6+2*m3*m5*m7*x3*x5*x7+2*m3*m6*m7*x3*x6*x7+2*m4*m5*m6*x4*x5*x6+2*m4*m5*m7*x4*x5*x7+2*m4*m6*m7*x4*x6*x7+2*m5*m6*m7*x5*x6*x7+m2*m3*x2*x3+m2*m4*x2*x4+m2*m5*x2*x5+m2*m6*x2*x6+m2*m7*x2*x7+m3*m4*x3*x4+m3*m5*x3*x5+m3*m6*x3*x6+m3*m7*x3*x7+m4*m5*x4*x5+m4*m6*x4*x6+m4*m7*x4*x7+m5*m6*x5*x6+m5*m7*x5*x7+m6*m7*x6*x7-1); #m_elseif n == 2; prm s##n = -(m3*m4*m5*m6*m7*x3*x4*x5*x6*x7+m3*m4*m5*m6*x3*x4*x5*x6+m3*m4*m5*m7*x3*x4*x5*x7+m3*m4*m6*m7*x3*x4*x6*x7+m3*m5*m6*m7*x3*x5*x6*x7+m4*m5*m6*m7*x4*x5*x6*x7+m3*m4*m5*x3*x4*x5+m3*m4*m6*x3*x4*x6+m3*m4*m7*x3*x4*x7+m3*m5*m6*x3*x5*x6+m3*m5*m7*x3*x5*x7+m3*m6*m7*x3*x6*x7+m4*m5*m6*x4*x5*x6+m4*m5*m7*x4*x5*x7+m4*m6*m7*x4*x6*x7+m5*m6*m7*x5*x6*x7+m3*m4*x3*x4+m3*m5*x3*x5+m3*m6*x3*x6+m3*m7*x3*x7+m4*m5*x4*x5+m4*m6*x4*x6+m4*m7*x4*x7+m5*m6*x5*x6+m5*m7*x5*x7+m6*m7*x6*x7+m3*x3+m4*x4+m5*x5+m6*x6+m7*x7+1)*m1*s1*x2/m_denom; #m_elseif n == 3; prm s##n = -(m2*m4*m5*m6*m7*x2*x4*x5*x6*x7+m2*m4*m5*m6*x2*x4*x5*x6+m2*m4*m5*m7*x2*x4*x5*x7+m2*m4*m6*m7*x2*x4*x6*x7+m2*m5*m6*m7*x2*x5*x6*x7+m4*m5*m6*m7*x4*x5*x6*x7+m2*m4*m5*x2*x4*x5+m2*m4*m6*x2*x4*x6+m2*m4*m7*x2*x4*x7+m2*m5*m6*x2*x5*x6+m2*m5*m7*x2*x5*x7+m2*m6*m7*x2*x6*x7+m4*m5*m6*x4*x5*x6+m4*m5*m7*x4*x5*x7+m4*m6*m7*x4*x6*x7+m5*m6*m7*x5*x6*x7+m2*m4*x2*x4+m2*m5*x2*x5+m2*m6*x2*x6+m2*m7*x2*x7+m4*m5*x4*x5+m4*m6*x4*x6+m4*m7*x4*x7+m5*m6*x5*x6+m5*m7*x5*x7+m6*m7*x6*x7+m2*x2+m4*x4+m5*x5+m6*x6+m7*x7+1)*m1*s1*x3/m_denom; #m_elseif n == 4; prm s##n = -m1*s1*x4*(m5*x5+1)*(m6*x6+1)*(m2*m3*m7*x2*x3*x7+m2*m3*x2*x3+m2*m7*x2*x7+m3*m7*x3*x7+m2*x2+m3*x3+m7*x7+1)/m_denom; #m_elseif n == 5; prm s##n = -(m2*m3*m4*m7*x2*x3*x4*x7+m2*m3*m4*x2*x3*x4+m2*m3*m7*x2*x3*x7+m2*m4*m7*x2*x4*x7+m3*m4*m7*x3*x4*x7+m2*m3*x2*x3+m2*m4*x2*x4+m2*m7*x2*x7+m3*m4*x3*x4+m3*m7*x3*x7+m4*m7*x4*x7+m2*x2+m3*x3+m4*x4+m7*x7+1)*s1*m1*x5*(m6*x6+1)/m_denom; #m_elseif n == 6; prm s##n = -m1*s1*x6*(m2*m3*m4*m5*m7*x2*x3*x4*x5*x7+m2*m3*m4*m5*x2*x3*x4*x5+m2*m3*m4*m7*x2*x3*x4*x7+m2*m3*m5*m7*x2*x3*x5*x7+m2*m4*m5*m7*x2*x4*x5*x7+m3*m4*m5*m7*x3*x4*x5*x7+m2*m3*m4*x2*x3*x4+m2*m3*m5*x2*x3*x5+m2*m3*m7*x2*x3*x7+m2*m4*m5*x2*x4*x5+m2*m4*m7*x2*x4*x7+m2*m5*m7*x2*x5*x7+m3*m4*m5*x3*x4*x5+m3*m4*m7*x3*x4*x7+m3*m5*m7*x3*x5*x7+m4*m5*m7*x4*x5*x7+m2*m3*x2*x3+m2*m4*x2*x4+m2*m5*x2*x5+m2*m7*x2*x7+m3*m4*x3*x4+m3*m5*x3*x5+m3*m7*x3*x7+m4*m5*x4*x5+m4*m7*x4*x7+m5*m7*x5*x7+m2*x2+m3*x3+m4*x4+m5*x5+m7*x7+1)/m_denom; #m_elseif n == 7; prm s##n = -m1*s1*x7*(m2*m3*m4*m5*m6*x2*x3*x4*x5*x6+m2*m3*m4*m5*x2*x3*x4*x5+m2*m3*m4*m6*x2*x3*x4*x6+m2*m3*m5*m6*x2*x3*x5*x6+m2*m4*m5*m6*x2*x4*x5*x6+m3*m4*m5*m6*x3*x4*x5*x6+m2*m3*m4*x2*x3*x4+m2*m3*m5*x2*x3*x5+m2*m3*m6*x2*x3*x6+m2*m4*m5*x2*x4*x5+m2*m4*m6*x2*x4*x6+m2*m5*m6*x2*x5*x6+m3*m4*m5*x3*x4*x5+m3*m4*m6*x3*x4*x6+m3*m5*m6*x3*x5*x6+m4*m5*m6*x4*x5*x6+m2*m3*x2*x3+m2*m4*x2*x4+m2*m5*x2*x5+m2*m6*x2*x6+m3*m4*x3*x4+m3*m5*x3*x5+m3*m6*x3*x6+m4*m5*x4*x5+m4*m6*x4*x6+m5*m6*x5*x6+m2*x2+m3*x3+m4*x4+m5*x5+m6*x6+1)/m_denom; #m_endif #m_elseif p == 8; #m_if n == 1; prm m_denom = (6*m2*m3*m4*m5*m6*m7*m8*x2*x3*x4*x5*x6*x7*x8+5*m2*m3*m4*m5*m6*m7*x2*x3*x4*x5*x6*x7+5*m2*m3*m4*m5*m6*m8*x2*x3*x4*x5*x6*x8+5*m2*m3*m4*m5*m7*m8*x2*x3*x4*x5*x7*x8+5*m2*m3*m4*m6*m7*m8*x2*x3*x4*x6*x7*x8+5*m2*m3*m5*m6*m7*m8*x2*x3*x5*x6*x7*x8+5*m2*m4*m5*m6*m7*m8*x2*x4*x5*x6*x7*x8+5*m3*m4*m5*m6*m7*m8*x3*x4*x5*x6*x7*x8+4*m2*m3*m4*m5*m6*x2*x3*x4*x5*x6+4*m2*m3*m4*m5*m7*x2*x3*x4*x5*x7+4*m2*m3*m4*m5*m8*x2*x3*x4*x5*x8+4*m2*m3*m4*m6*m7*x2*x3*x4*x6*x7+4*m2*m3*m4*m6*m8*x2*x3*x4*x6*x8+4*m2*m3*m4*m7*m8*x2*x3*x4*x7*x8+4*m2*m3*m5*m6*m7*x2*x3*x5*x6*x7+4*m2*m3*m5*m6*m8*x2*x3*x5*x6*x8+4*m2*m3*m5*m7*m8*x2*x3*x5*x7*x8+4*m2*m3*m6*m7*m8*x2*x3*x6*x7*x8+4*m2*m4*m5*m6*m7*x2*x4*x5*x6*x7+4*m2*m4*m5*m6*m8*x2*x4*x5*x6*x8+4*m2*m4*m5*m7*m8*x2*x4*x5*x7*x8+4*m2*m4*m6*m7*m8*x2*x4*x6*x7*x8+4*m2*m5*m6*m7*m8*x2*x5*x6*x7*x8+4*m3*m4*m5*m6*m7*x3*x4*x5*x6*x7+4*m3*m4*m5*m6*m8*x3*x4*x5*x6*x8+4*m3*m4*m5*m7*m8*x3*x4*x5*x7*x8+4*m3*m4*m6*m7*m8*x3*x4*x6*x7*x8+4*m3*m5*m6*m7*m8*x3*x5*x6*x7*x8+4*m4*m5*m6*m7*m8*x4*x5*x6*x7*x8+3*m2*m3*m4*m5*x2*x3*x4*x5+3*m2*m3*m4*m6*x2*x3*x4*x6+3*m2*m3*m4*m7*x2*x3*x4*x7+3*m2*m3*m4*m8*x2*x3*x4*x8+3*m2*m3*m5*m6*x2*x3*x5*x6+3*m2*m3*m5*m7*x2*x3*x5*x7+3*m2*m3*m5*m8*x2*x3*x5*x8+3*m2*m3*m6*m7*x2*x3*x6*x7+3*m2*m3*m6*m8*x2*x3*x6*x8+3*m2*m3*m7*m8*x2*x3*x7*x8+3*m2*m4*m5*m6*x2*x4*x5*x6+3*m2*m4*m5*m7*x2*x4*x5*x7+3*m2*m4*m5*m8*x2*x4*x5*x8+3*m2*m4*m6*m7*x2*x4*x6*x7+3*m2*m4*m6*m8*x2*x4*x6*x8+3*m2*m4*m7*m8*x2*x4*x7*x8+3*m2*m5*m6*m7*x2*x5*x6*x7+3*m2*m5*m6*m8*x2*x5*x6*x8+3*m2*m5*m7*m8*x2*x5*x7*x8+3*m2*m6*m7*m8*x2*x6*x7*x8+3*m3*m4*m5*m6*x3*x4*x5*x6+3*m3*m4*m5*m7*x3*x4*x5*x7+3*m3*m4*m5*m8*x3*x4*x5*x8+3*m3*m4*m6*m7*x3*x4*x6*x7+3*m3*m4*m6*m8*x3*x4*x6*x8+3*m3*m4*m7*m8*x3*x4*x7*x8+3*m3*m5*m6*m7*x3*x5*x6*x7+3*m3*m5*m6*m8*x3*x5*x6*x8+3*m3*m5*m7*m8*x3*x5*x7*x8+3*m3*m6*m7*m8*x3*x6*x7*x8+3*m4*m5*m6*m7*x4*x5*x6*x7+3*m4*m5*m6*m8*x4*x5*x6*x8+3*m4*m5*m7*m8*x4*x5*x7*x8+3*m4*m6*m7*m8*x4*x6*x7*x8+3*m5*m6*m7*m8*x5*x6*x7*x8+2*m2*m3*m4*x2*x3*x4+2*m2*m3*m5*x2*x3*x5+2*m2*m3*m6*x2*x3*x6+2*m2*m3*m7*x2*x3*x7+2*m2*m3*m8*x2*x3*x8+2*m2*m4*m5*x2*x4*x5+2*m2*m4*m6*x2*x4*x6+2*m2*m4*m7*x2*x4*x7+2*m2*m4*m8*x2*x4*x8+2*m2*m5*m6*x2*x5*x6+2*m2*m5*m7*x2*x5*x7+2*m2*m5*m8*x2*x5*x8+2*m2*m6*m7*x2*x6*x7+2*m2*m6*m8*x2*x6*x8+2*m2*m7*m8*x2*x7*x8+2*m3*m4*m5*x3*x4*x5+2*m3*m4*m6*x3*x4*x6+2*m3*m4*m7*x3*x4*x7+2*m3*m4*m8*x3*x4*x8+2*m3*m5*m6*x3*x5*x6+2*m3*m5*m7*x3*x5*x7+2*m3*m5*m8*x3*x5*x8+2*m3*m6*m7*x3*x6*x7+2*m3*m6*m8*x3*x6*x8+2*m3*m7*m8*x3*x7*x8+2*m4*m5*m6*x4*x5*x6+2*m4*m5*m7*x4*x5*x7+2*m4*m5*m8*x4*x5*x8+2*m4*m6*m7*x4*x6*x7+2*m4*m6*m8*x4*x6*x8+2*m4*m7*m8*x4*x7*x8+2*m5*m6*m7*x5*x6*x7+2*m5*m6*m8*x5*x6*x8+2*m5*m7*m8*x5*x7*x8+2*m6*m7*m8*x6*x7*x8+m2*m3*x2*x3+m2*m4*x2*x4+m2*m5*x2*x5+m2*m6*x2*x6+m2*m7*x2*x7+m2*m8*x2*x8+m3*m4*x3*x4+m3*m5*x3*x5+m3*m6*x3*x6+m3*m7*x3*x7+m3*m8*x3*x8+m4*m5*x4*x5+m4*m6*x4*x6+m4*m7*x4*x7+m4*m8*x4*x8+m5*m6*x5*x6+m5*m7*x5*x7+m5*m8*x5*x8+m6*m7*x6*x7+m6*m8*x6*x8+m7*m8*x7*x8-1); #m_elseif n == 2; prm s##n = -m1*s1*x2*(m3*m4*m5*m6*m7*m8*x3*x4*x5*x6*x7*x8+m3*m4*m5*m6*m7*x3*x4*x5*x6*x7+m3*m4*m5*m6*m8*x3*x4*x5*x6*x8+m3*m4*m5*m7*m8*x3*x4*x5*x7*x8+m3*m4*m6*m7*m8*x3*x4*x6*x7*x8+m3*m5*m6*m7*m8*x3*x5*x6*x7*x8+m4*m5*m6*m7*m8*x4*x5*x6*x7*x8+m3*m4*m5*m6*x3*x4*x5*x6+m3*m4*m5*m7*x3*x4*x5*x7+m3*m4*m5*m8*x3*x4*x5*x8+m3*m4*m6*m7*x3*x4*x6*x7+m3*m4*m6*m8*x3*x4*x6*x8+m3*m4*m7*m8*x3*x4*x7*x8+m3*m5*m6*m7*x3*x5*x6*x7+m3*m5*m6*m8*x3*x5*x6*x8+m3*m5*m7*m8*x3*x5*x7*x8+m3*m6*m7*m8*x3*x6*x7*x8+m4*m5*m6*m7*x4*x5*x6*x7+m4*m5*m6*m8*x4*x5*x6*x8+m4*m5*m7*m8*x4*x5*x7*x8+m4*m6*m7*m8*x4*x6*x7*x8+m5*m6*m7*m8*x5*x6*x7*x8+m3*m4*m5*x3*x4*x5+m3*m4*m6*x3*x4*x6+m3*m4*m7*x3*x4*x7+m3*m4*m8*x3*x4*x8+m3*m5*m6*x3*x5*x6+m3*m5*m7*x3*x5*x7+m3*m5*m8*x3*x5*x8+m3*m6*m7*x3*x6*x7+m3*m6*m8*x3*x6*x8+m3*m7*m8*x3*x7*x8+m4*m5*m6*x4*x5*x6+m4*m5*m7*x4*x5*x7+m4*m5*m8*x4*x5*x8+m4*m6*m7*x4*x6*x7+m4*m6*m8*x4*x6*x8+m4*m7*m8*x4*x7*x8+m5*m6*m7*x5*x6*x7+m5*m6*m8*x5*x6*x8+m5*m7*m8*x5*x7*x8+m6*m7*m8*x6*x7*x8+m3*m4*x3*x4+m3*m5*x3*x5+m3*m6*x3*x6+m3*m7*x3*x7+m3*m8*x3*x8+m4*m5*x4*x5+m4*m6*x4*x6+m4*m7*x4*x7+m4*m8*x4*x8+m5*m6*x5*x6+m5*m7*x5*x7+m5*m8*x5*x8+m6*m7*x6*x7+m6*m8*x6*x8+m7*m8*x7*x8+m3*x3+m4*x4+m5*x5+m6*x6+m7*x7+m8*x8+1)/m_denom; #m_elseif n == 3; prm s##n = -(m2*m4*m5*m6*m7*m8*x2*x4*x5*x6*x7*x8+m2*m4*m5*m6*m7*x2*x4*x5*x6*x7+m2*m4*m5*m6*m8*x2*x4*x5*x6*x8+m2*m4*m5*m7*m8*x2*x4*x5*x7*x8+m2*m4*m6*m7*m8*x2*x4*x6*x7*x8+m2*m5*m6*m7*m8*x2*x5*x6*x7*x8+m4*m5*m6*m7*m8*x4*x5*x6*x7*x8+m2*m4*m5*m6*x2*x4*x5*x6+m2*m4*m5*m7*x2*x4*x5*x7+m2*m4*m5*m8*x2*x4*x5*x8+m2*m4*m6*m7*x2*x4*x6*x7+m2*m4*m6*m8*x2*x4*x6*x8+m2*m4*m7*m8*x2*x4*x7*x8+m2*m5*m6*m7*x2*x5*x6*x7+m2*m5*m6*m8*x2*x5*x6*x8+m2*m5*m7*m8*x2*x5*x7*x8+m2*m6*m7*m8*x2*x6*x7*x8+m4*m5*m6*m7*x4*x5*x6*x7+m4*m5*m6*m8*x4*x5*x6*x8+m4*m5*m7*m8*x4*x5*x7*x8+m4*m6*m7*m8*x4*x6*x7*x8+m5*m6*m7*m8*x5*x6*x7*x8+m2*m4*m5*x2*x4*x5+m2*m4*m6*x2*x4*x6+m2*m4*m7*x2*x4*x7+m2*m4*m8*x2*x4*x8+m2*m5*m6*x2*x5*x6+m2*m5*m7*x2*x5*x7+m2*m5*m8*x2*x5*x8+m2*m6*m7*x2*x6*x7+m2*m6*m8*x2*x6*x8+m2*m7*m8*x2*x7*x8+m4*m5*m6*x4*x5*x6+m4*m5*m7*x4*x5*x7+m4*m5*m8*x4*x5*x8+m4*m6*m7*x4*x6*x7+m4*m6*m8*x4*x6*x8+m4*m7*m8*x4*x7*x8+m5*m6*m7*x5*x6*x7+m5*m6*m8*x5*x6*x8+m5*m7*m8*x5*x7*x8+m6*m7*m8*x6*x7*x8+m2*m4*x2*x4+m2*m5*x2*x5+m2*m6*x2*x6+m2*m7*x2*x7+m2*m8*x2*x8+m4*m5*x4*x5+m4*m6*x4*x6+m4*m7*x4*x7+m4*m8*x4*x8+m5*m6*x5*x6+m5*m7*x5*x7+m5*m8*x5*x8+m6*m7*x6*x7+m6*m8*x6*x8+m7*m8*x7*x8+m2*x2+m4*x4+m5*x5+m6*x6+m7*x7+m8*x8+1)*m1*s1*x3/m_denom; #m_elseif n == 4; prm s##n = -(m2*m3*m5*m6*m7*m8*x2*x3*x5*x6*x7*x8+m2*m3*m5*m6*m7*x2*x3*x5*x6*x7+m2*m3*m5*m6*m8*x2*x3*x5*x6*x8+m2*m3*m5*m7*m8*x2*x3*x5*x7*x8+m2*m3*m6*m7*m8*x2*x3*x6*x7*x8+m2*m5*m6*m7*m8*x2*x5*x6*x7*x8+m3*m5*m6*m7*m8*x3*x5*x6*x7*x8+m2*m3*m5*m6*x2*x3*x5*x6+m2*m3*m5*m7*x2*x3*x5*x7+m2*m3*m5*m8*x2*x3*x5*x8+m2*m3*m6*m7*x2*x3*x6*x7+m2*m3*m6*m8*x2*x3*x6*x8+m2*m3*m7*m8*x2*x3*x7*x8+m2*m5*m6*m7*x2*x5*x6*x7+m2*m5*m6*m8*x2*x5*x6*x8+m2*m5*m7*m8*x2*x5*x7*x8+m2*m6*m7*m8*x2*x6*x7*x8+m3*m5*m6*m7*x3*x5*x6*x7+m3*m5*m6*m8*x3*x5*x6*x8+m3*m5*m7*m8*x3*x5*x7*x8+m3*m6*m7*m8*x3*x6*x7*x8+m5*m6*m7*m8*x5*x6*x7*x8+m2*m3*m5*x2*x3*x5+m2*m3*m6*x2*x3*x6+m2*m3*m7*x2*x3*x7+m2*m3*m8*x2*x3*x8+m2*m5*m6*x2*x5*x6+m2*m5*m7*x2*x5*x7+m2*m5*m8*x2*x5*x8+m2*m6*m7*x2*x6*x7+m2*m6*m8*x2*x6*x8+m2*m7*m8*x2*x7*x8+m3*m5*m6*x3*x5*x6+m3*m5*m7*x3*x5*x7+m3*m5*m8*x3*x5*x8+m3*m6*m7*x3*x6*x7+m3*m6*m8*x3*x6*x8+m3*m7*m8*x3*x7*x8+m5*m6*m7*x5*x6*x7+m5*m6*m8*x5*x6*x8+m5*m7*m8*x5*x7*x8+m6*m7*m8*x6*x7*x8+m2*m3*x2*x3+m2*m5*x2*x5+m2*m6*x2*x6+m2*m7*x2*x7+m2*m8*x2*x8+m3*m5*x3*x5+m3*m6*x3*x6+m3*m7*x3*x7+m3*m8*x3*x8+m5*m6*x5*x6+m5*m7*x5*x7+m5*m8*x5*x8+m6*m7*x6*x7+m6*m8*x6*x8+m7*m8*x7*x8+m2*x2+m3*x3+m5*x5+m6*x6+m7*x7+m8*x8+1)*m1*s1*x4/m_denom; #m_elseif n == 5; prm s##n = -(m7*x7+1)*(m2*m3*m4*x2*x3*x4+m2*m3*x2*x3+m2*m4*x2*x4+m3*m4*x3*x4+m2*x2+m3*x3+m4*x4+1)*s1*m1*(m8*x8+1)*x5*(m6*x6+1)/m_denom; #m_elseif n == 6; prm s##n = -(m8*x8+1)*m1*s1*(m2*m3*m4*m5*x2*x3*x4*x5+m2*m3*m4*x2*x3*x4+m2*m3*m5*x2*x3*x5+m2*m4*m5*x2*x4*x5+m3*m4*m5*x3*x4*x5+m2*m3*x2*x3+m2*m4*x2*x4+m2*m5*x2*x5+m3*m4*x3*x4+m3*m5*x3*x5+m4*m5*x4*x5+m2*x2+m3*x3+m4*x4+m5*x5+1)*x6*(m7*x7+1)/m_denom; #m_elseif n == 7; prm s##n = -(m2*m3*m4*m5*m6*x2*x3*x4*x5*x6+m2*m3*m4*m5*x2*x3*x4*x5+m2*m3*m4*m6*x2*x3*x4*x6+m2*m3*m5*m6*x2*x3*x5*x6+m2*m4*m5*m6*x2*x4*x5*x6+m3*m4*m5*m6*x3*x4*x5*x6+m2*m3*m4*x2*x3*x4+m2*m3*m5*x2*x3*x5+m2*m3*m6*x2*x3*x6+m2*m4*m5*x2*x4*x5+m2*m4*m6*x2*x4*x6+m2*m5*m6*x2*x5*x6+m3*m4*m5*x3*x4*x5+m3*m4*m6*x3*x4*x6+m3*m5*m6*x3*x5*x6+m4*m5*m6*x4*x5*x6+m2*m3*x2*x3+m2*m4*x2*x4+m2*m5*x2*x5+m2*m6*x2*x6+m3*m4*x3*x4+m3*m5*x3*x5+m3*m6*x3*x6+m4*m5*x4*x5+m4*m6*x4*x6+m5*m6*x5*x6+m2*x2+m3*x3+m4*x4+m5*x5+m6*x6+1)*s1*m1*x7*(m8*x8+1)/m_denom; #m_elseif n == 8; prm s##n = -m1*s1*x8*(m2*m3*m4*m5*m6*m7*x2*x3*x4*x5*x6*x7+m2*m3*m4*m5*m6*x2*x3*x4*x5*x6+m2*m3*m4*m5*m7*x2*x3*x4*x5*x7+m2*m3*m4*m6*m7*x2*x3*x4*x6*x7+m2*m3*m5*m6*m7*x2*x3*x5*x6*x7+m2*m4*m5*m6*m7*x2*x4*x5*x6*x7+m3*m4*m5*m6*m7*x3*x4*x5*x6*x7+m2*m3*m4*m5*x2*x3*x4*x5+m2*m3*m4*m6*x2*x3*x4*x6+m2*m3*m4*m7*x2*x3*x4*x7+m2*m3*m5*m6*x2*x3*x5*x6+m2*m3*m5*m7*x2*x3*x5*x7+m2*m3*m6*m7*x2*x3*x6*x7+m2*m4*m5*m6*x2*x4*x5*x6+m2*m4*m5*m7*x2*x4*x5*x7+m2*m4*m6*m7*x2*x4*x6*x7+m2*m5*m6*m7*x2*x5*x6*x7+m3*m4*m5*m6*x3*x4*x5*x6+m3*m4*m5*m7*x3*x4*x5*x7+m3*m4*m6*m7*x3*x4*x6*x7+m3*m5*m6*m7*x3*x5*x6*x7+m4*m5*m6*m7*x4*x5*x6*x7+m2*m3*m4*x2*x3*x4+m2*m3*m5*x2*x3*x5+m2*m3*m6*x2*x3*x6+m2*m3*m7*x2*x3*x7+m2*m4*m5*x2*x4*x5+m2*m4*m6*x2*x4*x6+m2*m4*m7*x2*x4*x7+m2*m5*m6*x2*x5*x6+m2*m5*m7*x2*x5*x7+m2*m6*m7*x2*x6*x7+m3*m4*m5*x3*x4*x5+m3*m4*m6*x3*x4*x6+m3*m4*m7*x3*x4*x7+m3*m5*m6*x3*x5*x6+m3*m5*m7*x3*x5*x7+m3*m6*m7*x3*x6*x7+m4*m5*m6*x4*x5*x6+m4*m5*m7*x4*x5*x7+m4*m6*m7*x4*x6*x7+m5*m6*m7*x5*x6*x7+m2*m3*x2*x3+m2*m4*x2*x4+m2*m5*x2*x5+m2*m6*x2*x6+m2*m7*x2*x7+m3*m4*x3*x4+m3*m5*x3*x5+m3*m6*x3*x6+m3*m7*x3*x7+m4*m5*x4*x5+m4*m6*x4*x6+m4*m7*x4*x7+m5*m6*x5*x6+m5*m7*x5*x7+m6*m7*x6*x7+m2*x2+m3*x3+m4*x4+m5*x5+m6*x6+m7*x7+1)/m_denom; #m_endif #m_elseif p == 9; #m_if n == 1; prm m_denom = (-1+2*m2*m3*m4*x2*x3*x4+x4*m2*x2*m4+m2*m3*x2*x3+m3*m4*x3*x4+4*m2*m3*m4*m5*m6*x2*x3*x4*x5*x6+m4*m6*x4*x6+x7*m2*x2*m7+m3*m7*x3*x7+m4*m7*x4*x7+m5*m7*x5*x7+x6*m6*m7*x7+x8*m2*x2*m8+m3*m8*x3*x8+m4*m8*x4*x8+m5*m8*x5*x8+x6*m6*m8*x8+x7*m8*m7*x8+x6*m2*x2*m6+m3*m6*x3*x6+m2*m5*x2*x5+m3*m5*x3*x5+m4*m5*x4*x5+m5*m6*x5*x6+x9*m2*x2*m9+m3*m9*x3*x9+m4*m9*x4*x9+m5*m9*x5*x9+x6*m6*m9*x9+x7*m9*m7*x9+x8*m9*m8*x9+3*m2*m3*m4*m6*x2*x3*x4*x6+3*m2*m3*m4*m7*x2*x3*x4*x7+3*m3*m4*m5*m7*x3*x4*x5*x7+3*m2*m4*m5*m7*x2*x4*x5*x7+3*m2*m3*m5*m7*x2*x3*x5*x7+3*x6*m4*m5*m6*m7*x4*x5*x7+3*x6*m3*m4*m6*m7*x3*x4*x7+3*x6*m2*m5*m6*m7*x2*x5*x7+3*x6*m3*m5*m6*m7*x3*x5*x7+3*x6*m2*m4*m6*m7*x2*x4*x7+3*x6*m2*m3*m6*m7*x2*x3*x7+3*x6*m2*m3*m6*m8*x2*x3*x8+3*m2*m3*m4*m8*x2*x3*x4*x8+3*m3*m4*m5*m8*x3*x4*x5*x8+3*m2*m4*m5*m8*x2*x4*x5*x8+3*m2*m3*m5*m8*x2*x3*x5*x8+3*x6*m4*m5*m6*m8*x4*x5*x8+3*x6*m3*m4*m6*m8*x3*x4*x8+3*x6*m2*m5*m6*m8*x2*x5*x8+3*x6*m3*m5*m6*m8*x3*x5*x8+3*x6*m2*m4*m6*m8*x2*x4*x8+3*x7*m4*m5*m8*x4*x5*m7*x8+3*x7*m3*m4*m8*x3*x4*m7*x8+3*x7*m2*m5*m8*x2*x5*m7*x8+3*x7*m3*m5*m8*x3*x5*m7*x8+3*x7*m2*m4*m8*x2*x4*m7*x8+3*x7*x6*m2*m6*m8*x2*m7*x8+3*x7*x6*m3*m6*m8*x3*m7*x8+3*x7*x6*m4*m6*m8*x4*m7*x8+3*x7*x6*m5*m6*m8*x5*m7*x8+3*x7*m2*m3*m8*x2*x3*m7*x8+7*x8*x7*x6*m2*m3*m4*m5*m6*m9*x2*x3*x4*x5*m7*m8*x9+6*x7*x6*m2*m3*m4*m5*m6*m8*x2*x3*x4*x5*m7*x8+5*x8*x7*x6*m3*m5*m6*m9*x3*x5*m7*m8*x9+5*x8*x7*x6*m2*m4*m6*m9*x2*x4*m7*m8*x9+5*x8*x7*x6*m2*m3*m6*m9*x2*x3*m7*m8*x9+5*x8*x7*m2*m3*m4*m9*x2*x3*x4*m7*m8*x9+5*x8*x7*m3*m4*m5*m9*x3*x4*x5*m7*m8*x9+5*x6*m2*m3*m4*m5*m6*m9*x2*x3*x4*x5*x9+5*x7*x6*m2*m3*m4*m6*m9*x2*x3*x4*m7*x9+5*x7*x6*m3*m4*m5*m6*m9*x3*x4*x5*m7*x9+5*x7*m2*m3*m4*m5*m9*x2*x3*x4*x5*m7*x9+5*x7*x6*m2*m4*m5*m6*m9*x2*x4*x5*m7*x9+5*x7*x6*m2*m3*m5*m6*m9*x2*x3*x5*m7*x9+5*x8*x7*m2*m4*m5*m9*x2*x4*x5*m7*m8*x9+5*x8*x7*m2*m3*m5*m9*x2*x3*x5*m7*m8*x9+5*x8*x7*x6*m4*m5*m6*m9*x4*x5*m7*m8*x9+5*x8*x6*m2*m3*m4*m6*m9*x2*x3*x4*m8*x9+5*x8*x6*m3*m4*m5*m6*m9*x3*x4*x5*m8*x9+5*x8*m2*m3*m4*m5*m9*x2*x3*x4*x5*m8*x9+5*x8*x6*m2*m4*m5*m6*m9*x2*x4*x5*m8*x9+5*x8*x6*m2*m3*m5*m6*m9*x2*x3*x5*m8*x9+5*x8*x7*x6*m3*m4*m6*m9*x3*x4*m7*m8*x9+5*x8*x7*x6*m2*m5*m6*m9*x2*x5*m7*m8*x9+4*x8*x7*m2*m4*m9*x2*x4*m7*m8*x9+4*x8*x7*x6*m2*m6*m9*x2*m7*m8*x9+4*x8*x7*x6*m3*m6*m9*x3*m7*m8*x9+4*x8*x7*x6*m4*m6*m9*x4*m7*m8*x9+4*x8*x7*x6*m5*m6*m9*x5*m7*m8*x9+4*x8*x7*m2*m3*m9*x2*x3*m7*m8*x9+4*x8*x6*m2*m3*m6*m9*x2*x3*m8*x9+4*x8*m2*m3*m4*m9*x2*x3*x4*m8*x9+4*x8*m3*m4*m5*m9*x3*x4*x5*m8*x9+4*x8*m2*m4*m5*m9*x2*x4*x5*m8*x9+4*x7*m2*m3*m4*m9*x2*x3*x4*m7*x9+4*x7*m3*m4*m5*m9*x3*x4*x5*m7*x9+4*x7*m2*m4*m5*m9*x2*x4*x5*m7*x9+4*x7*m2*m3*m5*m9*x2*x3*x5*m7*x9+4*x7*x6*m4*m5*m6*m9*x4*x5*m7*x9+4*x6*m2*m3*m4*m6*m9*x2*x3*x4*x9+4*x6*m3*m4*m5*m6*m9*x3*x4*x5*x9+4*x8*m2*m3*m5*m9*x2*x3*x5*m8*x9+4*x8*x6*m4*m5*m6*m9*x4*x5*m8*x9+4*x8*x6*m3*m4*m6*m9*x3*x4*m8*x9+4*x8*x6*m2*m5*m6*m9*x2*x5*m8*x9+4*x8*x6*m3*m5*m6*m9*x3*x5*m8*x9+4*x8*x6*m2*m4*m6*m9*x2*x4*m8*x9+4*x8*x7*m4*m5*m9*x4*x5*m7*m8*x9+4*x8*x7*m3*m4*m9*x3*x4*m7*m8*x9+4*m2*m3*m4*m5*m9*x2*x3*x4*x5*x9+4*x6*m2*m4*m5*m6*m9*x2*x4*x5*x9+4*x6*m2*m3*m5*m6*m9*x2*x3*x5*x9+4*x7*x6*m3*m4*m6*m9*x3*x4*m7*x9+4*x7*x6*m2*m5*m6*m9*x2*x5*m7*x9+4*x7*x6*m3*m5*m6*m9*x3*x5*m7*x9+4*x7*x6*m2*m4*m6*m9*x2*x4*m7*x9+4*x7*x6*m2*m3*m6*m9*x2*x3*m7*x9+4*x8*x7*m2*m5*m9*x2*x5*m7*m8*x9+4*x8*x7*m3*m5*m9*x3*x5*m7*m8*x9+5*x6*m2*m3*m4*m5*m6*m8*x2*x3*x4*x5*x8+5*x7*x6*m2*m3*m4*m6*m8*x2*x3*x4*m7*x8+5*x7*x6*m3*m4*m5*m6*m8*x3*x4*x5*m7*x8+5*x7*m2*m3*m4*m5*m8*x2*x3*x4*x5*m7*x8+5*x7*x6*m2*m4*m5*m6*m8*x2*x4*x5*m7*x8+5*x7*x6*m2*m3*m5*m6*m8*x2*x3*x5*m7*x8+5*x6*m2*m3*m4*m5*m6*m7*x2*x3*x4*x5*x7+3*x6*m4*m5*m6*m9*x4*x5*x9+3*x6*m3*m4*m6*m9*x3*x4*x9+3*x6*m2*m5*m6*m9*x2*x5*x9+3*x6*m3*m5*m6*m9*x3*x5*x9+3*x6*m2*m4*m6*m9*x2*x4*x9+3*x7*m4*m5*m9*x4*x5*m7*x9+3*x7*m3*m4*m9*x3*x4*m7*x9+3*x7*m2*m5*m9*x2*x5*m7*x9+3*x7*m3*m5*m9*x3*x5*m7*x9+3*x7*m2*m4*m9*x2*x4*m7*x9+3*x8*x7*m5*m9*x5*m7*m8*x9+3*x8*x7*x6*m6*m9*m7*m8*x9+3*x8*x7*m2*x2*m9*m7*m8*x9+3*x8*x7*m3*m9*x3*m7*m8*x9+3*x8*m2*m3*m9*x2*x3*m8*x9+3*x8*m3*m4*m9*x3*x4*m8*x9+3*x8*m2*m5*m9*x2*x5*m8*x9+3*x8*m3*m5*m9*x3*x5*m8*x9+3*x8*m2*m4*m9*x2*x4*m8*x9+3*x8*x6*m2*m6*m9*x2*m8*x9+3*x8*x6*m3*m6*m9*x3*m8*x9+3*x8*x6*m4*m6*m9*x4*m8*x9+3*x8*x6*m5*m6*m9*x5*m8*x9+3*x8*m4*m5*m9*x4*x5*m8*x9+3*x8*x7*m4*m9*x4*m7*m8*x9+3*x7*x6*m2*m6*m9*x2*m7*x9+3*x7*x6*m3*m6*m9*x3*m7*x9+3*x7*x6*m4*m6*m9*x4*m7*x9+3*x7*x6*m5*m6*m9*x5*m7*x9+3*x7*m2*m3*m9*x2*x3*m7*x9+3*x6*m2*m3*m6*m9*x2*x3*x9+3*m2*m3*m4*m9*x2*x3*x4*x9+3*m3*m4*m5*m9*x3*x4*x5*x9+3*m2*m4*m5*m9*x2*x4*x5*x9+3*m2*m3*m5*m9*x2*x3*x5*x9+3*m2*m3*m4*m5*x2*x3*x4*x5+3*m2*m3*m5*m6*x2*x3*x5*x6+3*m2*m4*m5*m6*x2*x4*x5*x6+3*m3*m4*m5*m6*x3*x4*x5*x6+4*x7*x6*m2*m3*m6*m8*x2*x3*m7*x8+4*x7*m2*m3*m4*m8*x2*x3*x4*m7*x8+4*x7*m3*m4*m5*m8*x3*x4*x5*m7*x8+4*x7*m2*m4*m5*m8*x2*x4*x5*m7*x8+4*x7*m2*m3*m5*m8*x2*x3*x5*m7*x8+4*x7*x6*m4*m5*m6*m8*x4*x5*m7*x8+4*x6*m3*m4*m5*m6*m8*x3*x4*x5*x8+4*m2*m3*m4*m5*m8*x2*x3*x4*x5*x8+4*x6*m2*m4*m5*m6*m8*x2*x4*x5*x8+4*x6*m2*m3*m5*m6*m8*x2*x3*x5*x8+4*x6*m2*m3*m4*m6*m8*x2*x3*x4*x8+4*x7*x6*m3*m4*m6*m8*x3*x4*m7*x8+4*x7*x6*m2*m5*m6*m8*x2*x5*m7*x8+4*x7*x6*m3*m5*m6*m8*x3*x5*m7*x8+4*x7*x6*m2*m4*m6*m8*x2*x4*m7*x8+4*x6*m2*m4*m5*m6*m7*x2*x4*x5*x7+4*m2*m3*m4*m5*m7*x2*x3*x4*x5*x7+4*x6*m2*m3*m5*m6*m7*x2*x3*x5*x7+4*x6*m2*m3*m4*m6*m7*x2*x3*x4*x7+4*x6*m3*m4*m5*m6*m7*x3*x4*x5*x7+2*m2*m4*m6*x2*x4*x6+2*m3*m4*m6*x3*x4*x6+2*x7*m2*x2*m9*m7*x9+2*x7*m3*m9*x3*m7*x9+2*x8*x6*m6*m9*m8*x9+2*x8*x7*m9*m7*m8*x9+2*x8*m2*x2*m9*m8*x9+2*x8*m3*m9*x3*m8*x9+2*x8*m4*m9*x4*m8*x9+2*x8*m5*m9*x5*m8*x9+2*m3*m4*m9*x3*x4*x9+2*m2*m5*m9*x2*x5*x9+2*m3*m5*m9*x3*x5*x9+2*m2*m4*m9*x2*x4*x9+2*x6*m2*m6*m9*x2*x9+2*x6*m3*m6*m9*x3*x9+2*x6*m4*m6*m9*x4*x9+2*x6*m5*m6*m9*x5*x9+2*m4*m5*m9*x4*x5*x9+2*x7*m4*m9*x4*m7*x9+2*x7*m5*m9*x5*m7*x9+2*x7*x6*m6*m9*m7*x9+2*m2*m3*m9*x2*x3*x9+2*m2*m3*m5*x2*x3*x5+2*m2*m4*m5*x2*x4*x5+2*m2*m5*m6*x2*x5*x6+2*m3*m4*m5*x3*x4*x5+2*m3*m5*m6*x3*x5*x6+2*m4*m5*m6*x4*x5*x6+2*m2*m3*m6*x2*x3*x6+6*x7*x6*m2*m3*m4*m5*m6*m9*x2*x3*x4*x5*m7*x9+6*x8*x6*m2*m3*m4*m5*m6*m9*x2*x3*x4*x5*m8*x9+6*x8*x7*x6*m2*m3*m4*m6*m9*x2*x3*x4*m7*m8*x9+6*x8*x7*x6*m3*m4*m5*m6*m9*x3*x4*x5*m7*m8*x9+6*x8*x7*m2*m3*m4*m5*m9*x2*x3*x4*x5*m7*m8*x9+6*x8*x7*x6*m2*m4*m5*m6*m9*x2*x4*x5*m7*m8*x9+6*x8*x7*x6*m2*m3*m5*m6*m9*x2*x3*x5*m7*m8*x9+2*m3*m4*m8*x3*x4*x8+2*m2*m5*m8*x2*x5*x8+2*m3*m5*m8*x3*x5*x8+2*m2*m4*m8*x2*x4*x8+2*x6*m2*m6*m8*x2*x8+2*x6*m3*m6*m8*x3*x8+2*x6*m4*m6*m8*x4*x8+2*x6*m5*m6*m8*x5*x8+2*m4*m5*m8*x4*x5*x8+2*x7*m4*m8*x4*m7*x8+2*x7*m5*m8*x5*m7*x8+2*x7*x6*m6*m8*m7*x8+2*x7*m2*x2*m8*m7*x8+2*x7*m3*m8*x3*m7*x8+2*m2*m3*m8*x2*x3*x8+2*m4*m5*m7*x4*x5*x7+2*m3*m4*m7*x3*x4*x7+2*m2*m5*m7*x2*x5*x7+2*m3*m5*m7*x3*x5*x7+2*m2*m4*m7*x2*x4*x7+2*x6*m2*m6*m7*x2*x7+2*x6*m3*m6*m7*x3*x7+2*x6*m4*m6*m7*x4*x7+2*x6*m5*m6*m7*x5*x7+2*m2*m3*m7*x2*x3*x7); #m_elseif n == 2; prm s##n = -x2*s1*m1*(m3*m4*m5*m6*m7*m8*m9*x3*x4*x5*x6*x7*x8*x9+m3*m4*m5*m6*m7*m8*x3*x4*x5*x6*x7*x8+m3*m4*m5*m6*m7*m9*x3*x4*x5*x6*x7*x9+m3*m4*m5*m6*m8*m9*x3*x4*x5*x6*x8*x9+m3*m4*m5*m7*m8*m9*x3*x4*x5*x7*x8*x9+m3*m4*m6*m7*m8*m9*x3*x4*x6*x7*x8*x9+m3*m5*m6*m7*m8*m9*x3*x5*x6*x7*x8*x9+m4*m5*m6*m7*m8*m9*x4*x5*x6*x7*x8*x9+m3*m4*m5*m6*m7*x3*x4*x5*x6*x7+m3*m4*m5*m6*m8*x3*x4*x5*x6*x8+m3*m4*m5*m6*m9*x3*x4*x5*x6*x9+m3*m4*m5*m7*m8*x3*x4*x5*x7*x8+m3*m4*m5*m7*m9*x3*x4*x5*x7*x9+m3*m4*m5*m8*m9*x3*x4*x5*x8*x9+m3*m4*m6*m7*m8*x3*x4*x6*x7*x8+m3*m4*m6*m7*m9*x3*x4*x6*x7*x9+m3*m4*m6*m8*m9*x3*x4*x6*x8*x9+m3*m4*m7*m8*m9*x3*x4*x7*x8*x9+m3*m5*m6*m7*m8*x3*x5*x6*x7*x8+m3*m5*m6*m7*m9*x3*x5*x6*x7*x9+m3*m5*m6*m8*m9*x3*x5*x6*x8*x9+m3*m5*m7*m8*m9*x3*x5*x7*x8*x9+m3*m6*m7*m8*m9*x3*x6*x7*x8*x9+m4*m5*m6*m7*m8*x4*x5*x6*x7*x8+m4*m5*m6*m7*m9*x4*x5*x6*x7*x9+m4*m5*m6*m8*m9*x4*x5*x6*x8*x9+m4*m5*m7*m8*m9*x4*x5*x7*x8*x9+m4*m6*m7*m8*m9*x4*x6*x7*x8*x9+m5*m6*m7*m8*m9*x5*x6*x7*x8*x9+m3*m4*m5*m6*x3*x4*x5*x6+m3*m4*m5*m7*x3*x4*x5*x7+m3*m4*m5*m8*x3*x4*x5*x8+m3*m4*m5*m9*x3*x4*x5*x9+m3*m4*m6*m7*x3*x4*x6*x7+m3*m4*m6*m8*x3*x4*x6*x8+m3*m4*m6*m9*x3*x4*x6*x9+m3*m4*m7*m8*x3*x4*x7*x8+m3*m4*m7*m9*x3*x4*x7*x9+m3*m4*m8*m9*x3*x4*x8*x9+m3*m5*m6*m7*x3*x5*x6*x7+m3*m5*m6*m8*x3*x5*x6*x8+m3*m5*m6*m9*x3*x5*x6*x9+m3*m5*m7*m8*x3*x5*x7*x8+m3*m5*m7*m9*x3*x5*x7*x9+m3*m5*m8*m9*x3*x5*x8*x9+m3*m6*m7*m8*x3*x6*x7*x8+m3*m6*m7*m9*x3*x6*x7*x9+m3*m6*m8*m9*x3*x6*x8*x9+m3*m7*m8*m9*x3*x7*x8*x9+m4*m5*m6*m7*x4*x5*x6*x7+m4*m5*m6*m8*x4*x5*x6*x8+m4*m5*m6*m9*x4*x5*x6*x9+m4*m5*m7*m8*x4*x5*x7*x8+m4*m5*m7*m9*x4*x5*x7*x9+m4*m5*m8*m9*x4*x5*x8*x9+m4*m6*m7*m8*x4*x6*x7*x8+m4*m6*m7*m9*x4*x6*x7*x9+m4*m6*m8*m9*x4*x6*x8*x9+m4*m7*m8*m9*x4*x7*x8*x9+m5*m6*m7*m8*x5*x6*x7*x8+m5*m6*m7*m9*x5*x6*x7*x9+m5*m6*m8*m9*x5*x6*x8*x9+m5*m7*m8*m9*x5*x7*x8*x9+m6*m7*m8*m9*x6*x7*x8*x9+m3*m4*m5*x3*x4*x5+m3*m4*m6*x3*x4*x6+m3*m4*m7*x3*x4*x7+m3*m4*m8*x3*x4*x8+m3*m4*m9*x3*x4*x9+m3*m5*m6*x3*x5*x6+m3*m5*m7*x3*x5*x7+m3*m5*m8*x3*x5*x8+m3*m5*m9*x3*x5*x9+m3*m6*m7*x3*x6*x7+m3*m6*m8*x3*x6*x8+m3*m6*m9*x3*x6*x9+m3*m7*m8*x3*x7*x8+m3*m7*m9*x3*x7*x9+m3*m8*m9*x3*x8*x9+m4*m5*m6*x4*x5*x6+m4*m5*m7*x4*x5*x7+m4*m5*m8*x4*x5*x8+m4*m5*m9*x4*x5*x9+m4*m6*m7*x4*x6*x7+m4*m6*m8*x4*x6*x8+m4*m6*m9*x4*x6*x9+m4*m7*m8*x4*x7*x8+m4*m7*m9*x4*x7*x9+m4*m8*m9*x4*x8*x9+m5*m6*m7*x5*x6*x7+m5*m6*m8*x5*x6*x8+m5*m6*m9*x5*x6*x9+m5*m7*m8*x5*x7*x8+m5*m7*m9*x5*x7*x9+m5*m8*m9*x5*x8*x9+m6*m7*m8*x6*x7*x8+m6*m7*m9*x6*x7*x9+m6*m8*m9*x6*x8*x9+m7*m8*m9*x7*x8*x9+m3*m4*x3*x4+m3*m5*x3*x5+m3*m6*x3*x6+m3*m7*x3*x7+m3*m8*x3*x8+m3*m9*x3*x9+m4*m5*x4*x5+m4*m6*x4*x6+m4*m7*x4*x7+m4*m8*x4*x8+m4*m9*x4*x9+m5*m6*x5*x6+m5*m7*x5*x7+m5*m8*x5*x8+m5*m9*x5*x9+m6*m7*x6*x7+m6*m8*x6*x8+m6*m9*x6*x9+m7*m8*x7*x8+m7*m9*x7*x9+m8*m9*x8*x9+m3*x3+m4*x4+m5*x5+m6*x6+m7*x7+m8*x8+m9*x9+1)/m_denom; #m_elseif n == 3; prm s##n = -(m2*m4*m5*m6*m7*m8*m9*x2*x4*x5*x6*x7*x8*x9+m2*m4*m5*m6*m7*m8*x2*x4*x5*x6*x7*x8+m2*m4*m5*m6*m7*m9*x2*x4*x5*x6*x7*x9+m2*m4*m5*m6*m8*m9*x2*x4*x5*x6*x8*x9+m2*m4*m5*m7*m8*m9*x2*x4*x5*x7*x8*x9+m2*m4*m6*m7*m8*m9*x2*x4*x6*x7*x8*x9+m2*m5*m6*m7*m8*m9*x2*x5*x6*x7*x8*x9+m4*m5*m6*m7*m8*m9*x4*x5*x6*x7*x8*x9+m2*m4*m5*m6*m7*x2*x4*x5*x6*x7+m2*m4*m5*m6*m8*x2*x4*x5*x6*x8+m2*m4*m5*m6*m9*x2*x4*x5*x6*x9+m2*m4*m5*m7*m8*x2*x4*x5*x7*x8+m2*m4*m5*m7*m9*x2*x4*x5*x7*x9+m2*m4*m5*m8*m9*x2*x4*x5*x8*x9+m2*m4*m6*m7*m8*x2*x4*x6*x7*x8+m2*m4*m6*m7*m9*x2*x4*x6*x7*x9+m2*m4*m6*m8*m9*x2*x4*x6*x8*x9+m2*m4*m7*m8*m9*x2*x4*x7*x8*x9+m2*m5*m6*m7*m8*x2*x5*x6*x7*x8+m2*m5*m6*m7*m9*x2*x5*x6*x7*x9+m2*m5*m6*m8*m9*x2*x5*x6*x8*x9+m2*m5*m7*m8*m9*x2*x5*x7*x8*x9+m2*m6*m7*m8*m9*x2*x6*x7*x8*x9+m4*m5*m6*m7*m8*x4*x5*x6*x7*x8+m4*m5*m6*m7*m9*x4*x5*x6*x7*x9+m4*m5*m6*m8*m9*x4*x5*x6*x8*x9+m4*m5*m7*m8*m9*x4*x5*x7*x8*x9+m4*m6*m7*m8*m9*x4*x6*x7*x8*x9+m5*m6*m7*m8*m9*x5*x6*x7*x8*x9+m2*m4*m5*m6*x2*x4*x5*x6+m2*m4*m5*m7*x2*x4*x5*x7+m2*m4*m5*m8*x2*x4*x5*x8+m2*m4*m5*m9*x2*x4*x5*x9+m2*m4*m6*m7*x2*x4*x6*x7+m2*m4*m6*m8*x2*x4*x6*x8+m2*m4*m6*m9*x2*x4*x6*x9+m2*m4*m7*m8*x2*x4*x7*x8+m2*m4*m7*m9*x2*x4*x7*x9+m2*m4*m8*m9*x2*x4*x8*x9+m2*m5*m6*m7*x2*x5*x6*x7+m2*m5*m6*m8*x2*x5*x6*x8+m2*m5*m6*m9*x2*x5*x6*x9+m2*m5*m7*m8*x2*x5*x7*x8+m2*m5*m7*m9*x2*x5*x7*x9+m2*m5*m8*m9*x2*x5*x8*x9+m2*m6*m7*m8*x2*x6*x7*x8+m2*m6*m7*m9*x2*x6*x7*x9+m2*m6*m8*m9*x2*x6*x8*x9+m2*m7*m8*m9*x2*x7*x8*x9+m4*m5*m6*m7*x4*x5*x6*x7+m4*m5*m6*m8*x4*x5*x6*x8+m4*m5*m6*m9*x4*x5*x6*x9+m4*m5*m7*m8*x4*x5*x7*x8+m4*m5*m7*m9*x4*x5*x7*x9+m4*m5*m8*m9*x4*x5*x8*x9+m4*m6*m7*m8*x4*x6*x7*x8+m4*m6*m7*m9*x4*x6*x7*x9+m4*m6*m8*m9*x4*x6*x8*x9+m4*m7*m8*m9*x4*x7*x8*x9+m5*m6*m7*m8*x5*x6*x7*x8+m5*m6*m7*m9*x5*x6*x7*x9+m5*m6*m8*m9*x5*x6*x8*x9+m5*m7*m8*m9*x5*x7*x8*x9+m6*m7*m8*m9*x6*x7*x8*x9+m2*m4*m5*x2*x4*x5+m2*m4*m6*x2*x4*x6+m2*m4*m7*x2*x4*x7+m2*m4*m8*x2*x4*x8+m2*m4*m9*x2*x4*x9+m2*m5*m6*x2*x5*x6+m2*m5*m7*x2*x5*x7+m2*m5*m8*x2*x5*x8+m2*m5*m9*x2*x5*x9+m2*m6*m7*x2*x6*x7+m2*m6*m8*x2*x6*x8+m2*m6*m9*x2*x6*x9+m2*m7*m8*x2*x7*x8+m2*m7*m9*x2*x7*x9+m2*m8*m9*x2*x8*x9+m4*m5*m6*x4*x5*x6+m4*m5*m7*x4*x5*x7+m4*m5*m8*x4*x5*x8+m4*m5*m9*x4*x5*x9+m4*m6*m7*x4*x6*x7+m4*m6*m8*x4*x6*x8+m4*m6*m9*x4*x6*x9+m4*m7*m8*x4*x7*x8+m4*m7*m9*x4*x7*x9+m4*m8*m9*x4*x8*x9+m5*m6*m7*x5*x6*x7+m5*m6*m8*x5*x6*x8+m5*m6*m9*x5*x6*x9+m5*m7*m8*x5*x7*x8+m5*m7*m9*x5*x7*x9+m5*m8*m9*x5*x8*x9+m6*m7*m8*x6*x7*x8+m6*m7*m9*x6*x7*x9+m6*m8*m9*x6*x8*x9+m7*m8*m9*x7*x8*x9+m2*m4*x2*x4+m2*m5*x2*x5+m2*m6*x2*x6+m2*m7*x2*x7+m2*m8*x2*x8+m2*m9*x2*x9+m4*m5*x4*x5+m4*m6*x4*x6+m4*m7*x4*x7+m4*m8*x4*x8+m4*m9*x4*x9+m5*m6*x5*x6+m5*m7*x5*x7+m5*m8*x5*x8+m5*m9*x5*x9+m6*m7*x6*x7+m6*m8*x6*x8+m6*m9*x6*x9+m7*m8*x7*x8+m7*m9*x7*x9+m8*m9*x8*x9+m2*x2+m4*x4+m5*x5+m6*x6+m7*x7+m8*x8+m9*x9+1)*x3*s1*m1/m_denom; #m_elseif n == 4; prm s##n = -(m2*m3*m5*m6*m7*m8*m9*x2*x3*x5*x6*x7*x8*x9+m2*m3*m5*m6*m7*m8*x2*x3*x5*x6*x7*x8+m2*m3*m5*m6*m7*m9*x2*x3*x5*x6*x7*x9+m2*m3*m5*m6*m8*m9*x2*x3*x5*x6*x8*x9+m2*m3*m5*m7*m8*m9*x2*x3*x5*x7*x8*x9+m2*m3*m6*m7*m8*m9*x2*x3*x6*x7*x8*x9+m2*m5*m6*m7*m8*m9*x2*x5*x6*x7*x8*x9+m3*m5*m6*m7*m8*m9*x3*x5*x6*x7*x8*x9+m2*m3*m5*m6*m7*x2*x3*x5*x6*x7+m2*m3*m5*m6*m8*x2*x3*x5*x6*x8+m2*m3*m5*m6*m9*x2*x3*x5*x6*x9+m2*m3*m5*m7*m8*x2*x3*x5*x7*x8+m2*m3*m5*m7*m9*x2*x3*x5*x7*x9+m2*m3*m5*m8*m9*x2*x3*x5*x8*x9+m2*m3*m6*m7*m8*x2*x3*x6*x7*x8+m2*m3*m6*m7*m9*x2*x3*x6*x7*x9+m2*m3*m6*m8*m9*x2*x3*x6*x8*x9+m2*m3*m7*m8*m9*x2*x3*x7*x8*x9+m2*m5*m6*m7*m8*x2*x5*x6*x7*x8+m2*m5*m6*m7*m9*x2*x5*x6*x7*x9+m2*m5*m6*m8*m9*x2*x5*x6*x8*x9+m2*m5*m7*m8*m9*x2*x5*x7*x8*x9+m2*m6*m7*m8*m9*x2*x6*x7*x8*x9+m3*m5*m6*m7*m8*x3*x5*x6*x7*x8+m3*m5*m6*m7*m9*x3*x5*x6*x7*x9+m3*m5*m6*m8*m9*x3*x5*x6*x8*x9+m3*m5*m7*m8*m9*x3*x5*x7*x8*x9+m3*m6*m7*m8*m9*x3*x6*x7*x8*x9+m5*m6*m7*m8*m9*x5*x6*x7*x8*x9+m2*m3*m5*m6*x2*x3*x5*x6+m2*m3*m5*m7*x2*x3*x5*x7+m2*m3*m5*m8*x2*x3*x5*x8+m2*m3*m5*m9*x2*x3*x5*x9+m2*m3*m6*m7*x2*x3*x6*x7+m2*m3*m6*m8*x2*x3*x6*x8+m2*m3*m6*m9*x2*x3*x6*x9+m2*m3*m7*m8*x2*x3*x7*x8+m2*m3*m7*m9*x2*x3*x7*x9+m2*m3*m8*m9*x2*x3*x8*x9+m2*m5*m6*m7*x2*x5*x6*x7+m2*m5*m6*m8*x2*x5*x6*x8+m2*m5*m6*m9*x2*x5*x6*x9+m2*m5*m7*m8*x2*x5*x7*x8+m2*m5*m7*m9*x2*x5*x7*x9+m2*m5*m8*m9*x2*x5*x8*x9+m2*m6*m7*m8*x2*x6*x7*x8+m2*m6*m7*m9*x2*x6*x7*x9+m2*m6*m8*m9*x2*x6*x8*x9+m2*m7*m8*m9*x2*x7*x8*x9+m3*m5*m6*m7*x3*x5*x6*x7+m3*m5*m6*m8*x3*x5*x6*x8+m3*m5*m6*m9*x3*x5*x6*x9+m3*m5*m7*m8*x3*x5*x7*x8+m3*m5*m7*m9*x3*x5*x7*x9+m3*m5*m8*m9*x3*x5*x8*x9+m3*m6*m7*m8*x3*x6*x7*x8+m3*m6*m7*m9*x3*x6*x7*x9+m3*m6*m8*m9*x3*x6*x8*x9+m3*m7*m8*m9*x3*x7*x8*x9+m5*m6*m7*m8*x5*x6*x7*x8+m5*m6*m7*m9*x5*x6*x7*x9+m5*m6*m8*m9*x5*x6*x8*x9+m5*m7*m8*m9*x5*x7*x8*x9+m6*m7*m8*m9*x6*x7*x8*x9+m2*m3*m5*x2*x3*x5+m2*m3*m6*x2*x3*x6+m2*m3*m7*x2*x3*x7+m2*m3*m8*x2*x3*x8+m2*m3*m9*x2*x3*x9+m2*m5*m6*x2*x5*x6+m2*m5*m7*x2*x5*x7+m2*m5*m8*x2*x5*x8+m2*m5*m9*x2*x5*x9+m2*m6*m7*x2*x6*x7+m2*m6*m8*x2*x6*x8+m2*m6*m9*x2*x6*x9+m2*m7*m8*x2*x7*x8+m2*m7*m9*x2*x7*x9+m2*m8*m9*x2*x8*x9+m3*m5*m6*x3*x5*x6+m3*m5*m7*x3*x5*x7+m3*m5*m8*x3*x5*x8+m3*m5*m9*x3*x5*x9+m3*m6*m7*x3*x6*x7+m3*m6*m8*x3*x6*x8+m3*m6*m9*x3*x6*x9+m3*m7*m8*x3*x7*x8+m3*m7*m9*x3*x7*x9+m3*m8*m9*x3*x8*x9+m5*m6*m7*x5*x6*x7+m5*m6*m8*x5*x6*x8+m5*m6*m9*x5*x6*x9+m5*m7*m8*x5*x7*x8+m5*m7*m9*x5*x7*x9+m5*m8*m9*x5*x8*x9+m6*m7*m8*x6*x7*x8+m6*m7*m9*x6*x7*x9+m6*m8*m9*x6*x8*x9+m7*m8*m9*x7*x8*x9+m2*m3*x2*x3+m2*m5*x2*x5+m2*m6*x2*x6+m2*m7*x2*x7+m2*m8*x2*x8+m2*m9*x2*x9+m3*m5*x3*x5+m3*m6*x3*x6+m3*m7*x3*x7+m3*m8*x3*x8+m3*m9*x3*x9+m5*m6*x5*x6+m5*m7*x5*x7+m5*m8*x5*x8+m5*m9*x5*x9+m6*m7*x6*x7+m6*m8*x6*x8+m6*m9*x6*x9+m7*m8*x7*x8+m7*m9*x7*x9+m8*m9*x8*x9+m2*x2+m3*x3+m5*x5+m6*x6+m7*x7+m8*x8+m9*x9+1)*m1*s1*x4/m_denom; #m_elseif n == 5; prm s##n = -(m7*x7+1)*(m9*x9+1)*s1*m1*(m2*m3*m4*x2*x3*x4+m2*m3*x2*x3+m2*m4*x2*x4+m3*m4*x3*x4+m2*x2+m3*x3+m4*x4+1)*(m8*x8+1)*x5*(m6*x6+1)/m_denom; #m_elseif n == 6; prm s##n = -(m8*x8+1)*(m2*m3*m4*m5*x2*x3*x4*x5+m2*m3*m4*x2*x3*x4+m2*m3*m5*x2*x3*x5+m2*m4*m5*x2*x4*x5+m3*m4*m5*x3*x4*x5+m2*m3*x2*x3+m2*m4*x2*x4+m2*m5*x2*x5+m3*m4*x3*x4+m3*m5*x3*x5+m4*m5*x4*x5+m2*x2+m3*x3+m4*x4+m5*x5+1)*m1*s1*(m9*x9+1)*x6*(m7*x7+1)/m_denom; #m_elseif n == 7; prm s##n = -(m9*x9+1)*s1*m1*(m2*m3*m4*m5*m6*x2*x3*x4*x5*x6+m2*m3*m4*m5*x2*x3*x4*x5+m2*m3*m4*m6*x2*x3*x4*x6+m2*m3*m5*m6*x2*x3*x5*x6+m2*m4*m5*m6*x2*x4*x5*x6+m3*m4*m5*m6*x3*x4*x5*x6+m2*m3*m4*x2*x3*x4+m2*m3*m5*x2*x3*x5+m2*m3*m6*x2*x3*x6+m2*m4*m5*x2*x4*x5+m2*m4*m6*x2*x4*x6+m2*m5*m6*x2*x5*x6+m3*m4*m5*x3*x4*x5+m3*m4*m6*x3*x4*x6+m3*m5*m6*x3*x5*x6+m4*m5*m6*x4*x5*x6+m2*m3*x2*x3+m2*m4*x2*x4+m2*m5*x2*x5+m2*m6*x2*x6+m3*m4*x3*x4+m3*m5*x3*x5+m3*m6*x3*x6+m4*m5*x4*x5+m4*m6*x4*x6+m5*m6*x5*x6+m2*x2+m3*x3+m4*x4+m5*x5+m6*x6+1)*x7*(m8*x8+1)/m_denom; #m_elseif n == 8; prm s##n = -(m2*m3*m4*m5*m6*m7*x2*x3*x4*x5*x6*x7+m2*m3*m4*m5*m6*x2*x3*x4*x5*x6+m2*m3*m4*m5*m7*x2*x3*x4*x5*x7+m2*m3*m4*m6*m7*x2*x3*x4*x6*x7+m2*m3*m5*m6*m7*x2*x3*x5*x6*x7+m2*m4*m5*m6*m7*x2*x4*x5*x6*x7+m3*m4*m5*m6*m7*x3*x4*x5*x6*x7+m2*m3*m4*m5*x2*x3*x4*x5+m2*m3*m4*m6*x2*x3*x4*x6+m2*m3*m4*m7*x2*x3*x4*x7+m2*m3*m5*m6*x2*x3*x5*x6+m2*m3*m5*m7*x2*x3*x5*x7+m2*m3*m6*m7*x2*x3*x6*x7+m2*m4*m5*m6*x2*x4*x5*x6+m2*m4*m5*m7*x2*x4*x5*x7+m2*m4*m6*m7*x2*x4*x6*x7+m2*m5*m6*m7*x2*x5*x6*x7+m3*m4*m5*m6*x3*x4*x5*x6+m3*m4*m5*m7*x3*x4*x5*x7+m3*m4*m6*m7*x3*x4*x6*x7+m3*m5*m6*m7*x3*x5*x6*x7+m4*m5*m6*m7*x4*x5*x6*x7+m2*m3*m4*x2*x3*x4+m2*m3*m5*x2*x3*x5+m2*m3*m6*x2*x3*x6+m2*m3*m7*x2*x3*x7+m2*m4*m5*x2*x4*x5+m2*m4*m6*x2*x4*x6+m2*m4*m7*x2*x4*x7+m2*m5*m6*x2*x5*x6+m2*m5*m7*x2*x5*x7+m2*m6*m7*x2*x6*x7+m3*m4*m5*x3*x4*x5+m3*m4*m6*x3*x4*x6+m3*m4*m7*x3*x4*x7+m3*m5*m6*x3*x5*x6+m3*m5*m7*x3*x5*x7+m3*m6*m7*x3*x6*x7+m4*m5*m6*x4*x5*x6+m4*m5*m7*x4*x5*x7+m4*m6*m7*x4*x6*x7+m5*m6*m7*x5*x6*x7+m2*m3*x2*x3+m2*m4*x2*x4+m2*m5*x2*x5+m2*m6*x2*x6+m2*m7*x2*x7+m3*m4*x3*x4+m3*m5*x3*x5+m3*m6*x3*x6+m3*m7*x3*x7+m4*m5*x4*x5+m4*m6*x4*x6+m4*m7*x4*x7+m5*m6*x5*x6+m5*m7*x5*x7+m6*m7*x6*x7+m2*x2+m3*x3+m4*x4+m5*x5+m6*x6+m7*x7+1)*m1*s1*x8*(m9*x9+1)/m_denom; #m_elseif n == 9; prm s##n = -x9*s1*m1*(m2*m3*m4*m5*m6*m7*m8*x2*x3*x4*x5*x6*x7*x8+m2*m3*m4*m5*m6*m7*x2*x3*x4*x5*x6*x7+m2*m3*m4*m5*m6*m8*x2*x3*x4*x5*x6*x8+m2*m3*m4*m5*m7*m8*x2*x3*x4*x5*x7*x8+m2*m3*m4*m6*m7*m8*x2*x3*x4*x6*x7*x8+m2*m3*m5*m6*m7*m8*x2*x3*x5*x6*x7*x8+m2*m4*m5*m6*m7*m8*x2*x4*x5*x6*x7*x8+m3*m4*m5*m6*m7*m8*x3*x4*x5*x6*x7*x8+m2*m3*m4*m5*m6*x2*x3*x4*x5*x6+m2*m3*m4*m5*m7*x2*x3*x4*x5*x7+m2*m3*m4*m5*m8*x2*x3*x4*x5*x8+m2*m3*m4*m6*m7*x2*x3*x4*x6*x7+m2*m3*m4*m6*m8*x2*x3*x4*x6*x8+m2*m3*m4*m7*m8*x2*x3*x4*x7*x8+m2*m3*m5*m6*m7*x2*x3*x5*x6*x7+m2*m3*m5*m6*m8*x2*x3*x5*x6*x8+m2*m3*m5*m7*m8*x2*x3*x5*x7*x8+m2*m3*m6*m7*m8*x2*x3*x6*x7*x8+m2*m4*m5*m6*m7*x2*x4*x5*x6*x7+m2*m4*m5*m6*m8*x2*x4*x5*x6*x8+m2*m4*m5*m7*m8*x2*x4*x5*x7*x8+m2*m4*m6*m7*m8*x2*x4*x6*x7*x8+m2*m5*m6*m7*m8*x2*x5*x6*x7*x8+m3*m4*m5*m6*m7*x3*x4*x5*x6*x7+m3*m4*m5*m6*m8*x3*x4*x5*x6*x8+m3*m4*m5*m7*m8*x3*x4*x5*x7*x8+m3*m4*m6*m7*m8*x3*x4*x6*x7*x8+m3*m5*m6*m7*m8*x3*x5*x6*x7*x8+m4*m5*m6*m7*m8*x4*x5*x6*x7*x8+m2*m3*m4*m5*x2*x3*x4*x5+m2*m3*m4*m6*x2*x3*x4*x6+m2*m3*m4*m7*x2*x3*x4*x7+m2*m3*m4*m8*x2*x3*x4*x8+m2*m3*m5*m6*x2*x3*x5*x6+m2*m3*m5*m7*x2*x3*x5*x7+m2*m3*m5*m8*x2*x3*x5*x8+m2*m3*m6*m7*x2*x3*x6*x7+m2*m3*m6*m8*x2*x3*x6*x8+m2*m3*m7*m8*x2*x3*x7*x8+m2*m4*m5*m6*x2*x4*x5*x6+m2*m4*m5*m7*x2*x4*x5*x7+m2*m4*m5*m8*x2*x4*x5*x8+m2*m4*m6*m7*x2*x4*x6*x7+m2*m4*m6*m8*x2*x4*x6*x8+m2*m4*m7*m8*x2*x4*x7*x8+m2*m5*m6*m7*x2*x5*x6*x7+m2*m5*m6*m8*x2*x5*x6*x8+m2*m5*m7*m8*x2*x5*x7*x8+m2*m6*m7*m8*x2*x6*x7*x8+m3*m4*m5*m6*x3*x4*x5*x6+m3*m4*m5*m7*x3*x4*x5*x7+m3*m4*m5*m8*x3*x4*x5*x8+m3*m4*m6*m7*x3*x4*x6*x7+m3*m4*m6*m8*x3*x4*x6*x8+m3*m4*m7*m8*x3*x4*x7*x8+m3*m5*m6*m7*x3*x5*x6*x7+m3*m5*m6*m8*x3*x5*x6*x8+m3*m5*m7*m8*x3*x5*x7*x8+m3*m6*m7*m8*x3*x6*x7*x8+m4*m5*m6*m7*x4*x5*x6*x7+m4*m5*m6*m8*x4*x5*x6*x8+m4*m5*m7*m8*x4*x5*x7*x8+m4*m6*m7*m8*x4*x6*x7*x8+m5*m6*m7*m8*x5*x6*x7*x8+m2*m3*m4*x2*x3*x4+m2*m3*m5*x2*x3*x5+m2*m3*m6*x2*x3*x6+m2*m3*m7*x2*x3*x7+m2*m3*m8*x2*x3*x8+m2*m4*m5*x2*x4*x5+m2*m4*m6*x2*x4*x6+m2*m4*m7*x2*x4*x7+m2*m4*m8*x2*x4*x8+m2*m5*m6*x2*x5*x6+m2*m5*m7*x2*x5*x7+m2*m5*m8*x2*x5*x8+m2*m6*m7*x2*x6*x7+m2*m6*m8*x2*x6*x8+m2*m7*m8*x2*x7*x8+m3*m4*m5*x3*x4*x5+m3*m4*m6*x3*x4*x6+m3*m4*m7*x3*x4*x7+m3*m4*m8*x3*x4*x8+m3*m5*m6*x3*x5*x6+m3*m5*m7*x3*x5*x7+m3*m5*m8*x3*x5*x8+m3*m6*m7*x3*x6*x7+m3*m6*m8*x3*x6*x8+m3*m7*m8*x3*x7*x8+m4*m5*m6*x4*x5*x6+m4*m5*m7*x4*x5*x7+m4*m5*m8*x4*x5*x8+m4*m6*m7*x4*x6*x7+m4*m6*m8*x4*x6*x8+m4*m7*m8*x4*x7*x8+m5*m6*m7*x5*x6*x7+m5*m6*m8*x5*x6*x8+m5*m7*m8*x5*x7*x8+m6*m7*m8*x6*x7*x8+m2*m3*x2*x3+m2*m4*x2*x4+m2*m5*x2*x5+m2*m6*x2*x6+m2*m7*x2*x7+m2*m8*x2*x8+m3*m4*x3*x4+m3*m5*x3*x5+m3*m6*x3*x6+m3*m7*x3*x7+m3*m8*x3*x8+m4*m5*x4*x5+m4*m6*x4*x6+m4*m7*x4*x7+m4*m8*x4*x8+m5*m6*x5*x6+m5*m7*x5*x7+m5*m8*x5*x8+m6*m7*x6*x7+m6*m8*x6*x8+m7*m8*x7*x8+m2*x2+m3*x3+m4*x4+m5*x5+m6*x6+m7*x7+m8*x8+1)/m_denom; #m_endif #m_elseif p == 10; #m_if n == 1; prm m_denom = (-1+2*m10*m2*m3*x10*x2*x3+x10*m2*x2*m10+m10*m3*x10*x3+8*x8*m10*m2*m3*m4*m5*m6*m7*m8*x2*x3*x4*x5*x6*x7*m9*x10*x9+x5*m2*x2*m5+m3*m5*x3*x5+m4*m5*x4*x5+x6*m2*x2*m6+m3*m6*x3*x6+m5*m6*x5*x6+x4*m4*m6*x6+x7*m2*x2*m7+m3*m7*x3*x7+m5*m7*x5*x7+m4*m7*x4*x7+x6*m6*m7*x7+x8*m2*x2*m8+m3*m8*x3*x8+m5*m8*x5*x8+m4*m8*x4*x8+x6*m6*m8*x8+x7*m8*m7*x8+x3*m2*x2*m3+x4*m2*x2*m4+m3*m4*x3*x4+m10*m9*x10*x9+m10*m4*x4*x10+m10*m5*x5*x10+m10*m6*x6*x10+m10*m7*x7*x10+x8*m10*m8*x10+4*m10*m3*m4*m5*m7*x3*x4*x5*x7*x10+4*m10*m3*m4*m6*m7*x3*x4*x6*x7*x10+4*m10*m3*m5*m6*m7*x3*x5*x6*x7*x10+4*m10*m4*m5*m6*m7*x4*x5*x6*x7*x10+4*m10*m2*m3*m4*m5*x2*x3*x4*x5*x10+4*m10*m2*m3*m4*m6*x2*x3*x4*x6*x10+4*m10*m2*m3*m4*m7*x2*x3*x4*x7*x10+4*m10*m2*m3*m5*m6*x2*x3*x5*x6*x10+4*m10*m2*m3*m5*m7*x2*x3*x5*x7*x10+4*m10*m2*m3*m6*m7*x2*x3*x6*x7*x10+4*m10*m2*m4*m5*m6*x2*x4*x5*x6*x10+4*m10*m2*m4*m5*m7*x2*x4*x5*x7*x10+4*m10*m2*m4*m6*m7*x2*x4*x6*x7*x10+4*m10*m2*m5*m6*m7*x2*x5*x6*x7*x10+4*m10*m3*m4*m5*m6*x3*x4*x5*x6*x10+4*x8*m10*m2*m5*m6*m8*x2*x5*x6*x10+4*x8*m10*m2*m5*m7*m8*x2*x5*x7*x10+4*x8*m10*m2*m6*m7*m8*x2*x6*x7*x10+4*x8*m10*m3*m4*m5*m8*x3*x4*x5*x10+4*x8*m10*m3*m4*m6*m8*x3*x4*x6*x10+4*x8*m10*m3*m4*m7*m8*x3*x4*x7*x10+4*x8*m10*m3*m5*m6*m8*x3*x5*x6*x10+4*x8*m10*m3*m5*m7*m8*x3*x5*x7*x10+4*x8*m10*m3*m6*m7*m8*x3*x6*x7*x10+4*x8*m10*m4*m5*m6*m8*x4*x5*x6*x10+4*x8*m10*m4*m5*m7*m8*x4*x5*x7*x10+4*x8*m10*m4*m6*m7*m8*x4*x6*x7*x10+4*x8*m10*m5*m6*m7*m8*x5*x6*x7*x10+4*x8*m10*m2*m3*m4*m8*x2*x3*x4*x10+4*x8*m10*m2*m3*m5*m8*x2*x3*x5*x10+4*x8*m10*m2*m3*m6*m8*x2*x3*x6*x10+4*x8*m10*m2*m3*m7*m8*x2*x3*x7*x10+4*x8*m10*m2*m4*m5*m8*x2*x4*x5*x10+4*x8*m10*m2*m4*m6*m8*x2*x4*x6*x10+4*x8*m10*m2*m4*m7*m8*x2*x4*x7*x10+4*m10*m4*m6*m7*x4*x6*x7*m9*x10*x9+4*m10*m5*m6*m7*x5*x6*x7*m9*x10*x9+4*x8*m10*m2*m3*m8*x2*x3*m9*x10*x9+4*x8*m10*m2*m4*m8*x2*x4*m9*x10*x9+4*x8*m10*m2*m5*m8*x2*x5*m9*x10*x9+4*x8*m10*m2*m6*m8*x2*x6*m9*x10*x9+4*x8*m10*m2*m7*m8*x2*x7*m9*x10*x9+4*x8*m10*m3*m4*m8*x3*x4*m9*x10*x9+4*x8*m10*m3*m5*m8*x3*x5*m9*x10*x9+4*x8*m10*m3*m6*m8*x3*x6*m9*x10*x9+4*x8*m10*m3*m7*m8*x3*x7*m9*x10*x9+4*x8*m10*m4*m5*m8*x4*x5*m9*x10*x9+4*x8*m10*m4*m6*m8*x4*x6*m9*x10*x9+4*x8*m10*m4*m7*m8*x4*x7*m9*x10*x9+4*x8*m10*m5*m6*m8*x5*x6*m9*x10*x9+4*x8*m10*m5*m7*m8*x5*x7*m9*x10*x9+4*x8*m10*m6*m7*m8*x6*x7*m9*x10*x9+4*m10*m2*m3*m4*x2*x3*x4*m9*x10*x9+4*m10*m2*m3*m5*x2*x3*x5*m9*x10*x9+4*m10*m2*m3*m6*x2*x3*x6*m9*x10*x9+4*m10*m2*m3*m7*x2*x3*x7*m9*x10*x9+4*m10*m2*m4*m5*x2*x4*x5*m9*x10*x9+4*m10*m2*m4*m6*x2*x4*x6*m9*x10*x9+4*m10*m2*m4*m7*x2*x4*x7*m9*x10*x9+4*m10*m2*m5*m6*x2*x5*x6*m9*x10*x9+4*m10*m2*m5*m7*x2*x5*x7*m9*x10*x9+4*m10*m2*m6*m7*x2*x6*x7*m9*x10*x9+4*m10*m3*m4*m5*x3*x4*x5*m9*x10*x9+4*m10*m3*m4*m6*x3*x4*x6*m9*x10*x9+4*m10*m3*m4*m7*x3*x4*x7*m9*x10*x9+4*m10*m3*m5*m6*x3*x5*x6*m9*x10*x9+4*m10*m3*m5*m7*x3*x5*x7*m9*x10*x9+4*m10*m3*m6*m7*x3*x6*x7*m9*x10*x9+4*m10*m4*m5*m6*x4*x5*x6*m9*x10*x9+4*m10*m4*m5*m7*x4*x5*x7*m9*x10*x9+4*m2*m3*m5*m6*m9*x2*x3*x5*x6*x9+4*m2*m3*m5*m7*m9*x2*x3*x5*x7*x9+4*m2*m3*m6*m7*m9*x2*x3*x6*x7*x9+4*m2*m4*m5*m6*m9*x2*x4*x5*x6*x9+4*m2*m4*m5*m7*m9*x2*x4*x5*x7*x9+4*m2*m4*m6*m7*m9*x2*x4*x6*x7*x9+4*m2*m5*m6*m7*m9*x2*x5*x6*x7*x9+4*m3*m4*m5*m6*m9*x3*x4*x5*x6*x9+4*m3*m4*m5*m7*m9*x3*x4*x5*x7*x9+4*m3*m4*m6*m7*m9*x3*x4*x6*x7*x9+4*m3*m5*m6*m7*m9*x3*x5*x6*x7*x9+4*m4*m5*m6*m7*m9*x4*x5*x6*x7*x9+4*x8*m2*m3*m4*m8*m9*x2*x3*x4*x9+4*x8*m2*m3*m5*m8*m9*x2*x3*x5*x9+4*x8*m2*m3*m6*m8*m9*x2*x3*x6*x9+4*x8*m2*m3*m7*m8*m9*x2*x3*x7*x9+4*x8*m2*m4*m5*m8*m9*x2*x4*x5*x9+4*x8*m2*m4*m6*m8*m9*x2*x4*x6*x9+4*x8*m2*m4*m7*m8*m9*x2*x4*x7*x9+4*x8*m2*m5*m6*m8*m9*x2*x5*x6*x9+4*x8*m2*m5*m7*m8*m9*x2*x5*x7*x9+4*x8*m2*m6*m7*m8*m9*x2*x6*x7*x9+4*x8*m3*m4*m5*m8*m9*x3*x4*x5*x9+4*x8*m3*m4*m6*m8*m9*x3*x4*x6*x9+4*x8*m3*m4*m7*m8*m9*x3*x4*x7*x9+4*x8*m3*m5*m6*m8*m9*x3*x5*x6*x9+4*x8*m3*m5*m7*m8*m9*x3*x5*x7*x9+4*x8*m3*m6*m7*m8*m9*x3*x6*x7*x9+4*x8*m4*m5*m6*m8*m9*x4*x5*x6*x9+4*x8*m4*m5*m7*m8*m9*x4*x5*x7*x9+4*x8*m4*m6*m7*m8*m9*x4*x6*x7*x9+4*x8*m5*m6*m7*m8*m9*x5*x6*x7*x9+4*m2*m3*m4*m5*m9*x2*x3*x4*x5*x9+4*m2*m3*m4*m6*m9*x2*x3*x4*x6*x9+4*m2*m3*m4*m7*m9*x2*x3*x4*x7*x9+3*x8*m2*m3*m8*m9*x2*x3*x9+3*x8*m2*m4*m8*m9*x2*x4*x9+3*x8*m2*m5*m8*m9*x2*x5*x9+3*x8*m2*m6*m8*m9*x2*x6*x9+3*x8*m2*m7*m8*m9*x2*x7*x9+3*x8*m3*m4*m8*m9*x3*x4*x9+3*m2*m3*m4*m9*x2*x3*x4*x9+3*m2*m3*m5*m9*x2*x3*x5*x9+3*m2*m3*m6*m9*x2*x3*x6*x9+3*m2*m3*m7*m9*x2*x3*x7*x9+3*m2*m4*m5*m9*x2*x4*x5*x9+3*m2*m4*m6*m9*x2*x4*x6*x9+3*m2*m4*m7*m9*x2*x4*x7*x9+3*m2*m5*m6*m9*x2*x5*x6*x9+3*m2*m5*m7*m9*x2*x5*x7*x9+3*m2*m6*m7*m9*x2*x6*x7*x9+3*m3*m4*m5*m9*x3*x4*x5*x9+3*m3*m4*m6*m9*x3*x4*x6*x9+3*m3*m4*m7*m9*x3*x4*x7*x9+3*m3*m5*m6*m9*x3*x5*x6*x9+3*m3*m5*m7*m9*x3*x5*x7*x9+3*m3*m6*m7*m9*x3*x6*x7*x9+3*m4*m5*m6*m9*x4*x5*x6*x9+3*m4*m5*m7*m9*x4*x5*x7*x9+3*m4*m6*m7*m9*x4*x6*x7*x9+3*m5*m6*m7*m9*x5*x6*x7*x9+3*x8*m3*m5*m8*m9*x3*x5*x9+3*x8*m3*m6*m8*m9*x3*x6*x9+3*x8*m3*m7*m8*m9*x3*x7*x9+3*x8*m4*m5*m8*m9*x4*x5*x9+3*x8*m4*m6*m8*m9*x4*x6*x9+3*x8*m4*m7*m8*m9*x4*x7*x9+3*x8*m5*m6*m8*m9*x5*x6*x9+3*x8*m5*m7*m8*m9*x5*x7*x9+3*x8*m6*m7*m8*m9*x6*x7*x9+7*x8*m2*m3*m4*m5*m6*m7*m8*m9*x2*x3*x4*x5*x6*x7*x9+7*x8*m10*m2*m3*m4*m5*m6*m7*m8*x2*x3*x4*x5*x6*x7*x10+7*m10*m2*m3*m4*m5*m6*m7*x2*x3*x4*x5*x6*x7*m9*x10*x9+7*x8*m10*m2*m3*m5*m6*m7*m8*x2*x3*x5*x6*x7*m9*x10*x9+7*x8*m10*m2*m4*m5*m6*m7*m8*x2*x4*x5*x6*x7*m9*x10*x9+7*x8*m10*m3*m4*m5*m6*m7*m8*x3*x4*x5*x6*x7*m9*x10*x9+7*x8*m10*m2*m3*m4*m5*m6*m8*x2*x3*x4*x5*x6*m9*x10*x9+7*x8*m10*m2*m3*m4*m5*m7*m8*x2*x3*x4*x5*x7*m9*x10*x9+7*x8*m10*m2*m3*m4*m6*m7*m8*x2*x3*x4*x6*x7*m9*x10*x9+2*m2*m6*m9*x2*x6*x9+2*m2*m7*m9*x2*x7*x9+2*m3*m4*m9*x3*x4*x9+2*m3*m5*m9*x3*x5*x9+2*m3*m6*m9*x3*x6*x9+2*m3*m7*m9*x3*x7*x9+2*m4*m5*m9*x4*x5*x9+2*m4*m6*m9*x4*x6*x9+2*m4*m7*m9*x4*x7*x9+2*m5*m6*m9*x5*x6*x9+2*m5*m7*m9*x5*x7*x9+2*m6*m7*m9*x6*x7*x9+2*m2*m3*m9*x2*x3*x9+2*x8*m2*m8*m9*x2*x9+2*x8*m3*m8*m9*x3*x9+2*x8*m4*m8*m9*x4*x9+2*x8*m5*m8*m9*x5*x9+2*x8*m6*m8*m9*x6*x9+2*x8*m7*m8*m9*x7*x9+2*m2*m4*m9*x2*x4*x9+2*m2*m5*m9*x2*x5*x9+x9*m2*x2*m9+m3*m9*x3*x9+m4*m9*x4*x9+m5*m9*x5*x9+m6*m9*x6*x9+m7*m9*x7*x9+x8*m8*m9*x9+6*m2*m3*m4*m5*m6*m7*m9*x2*x3*x4*x5*x6*x7*x9+6*x8*m2*m3*m4*m5*m6*m8*m9*x2*x3*x4*x5*x6*x9+6*x8*m2*m3*m4*m5*m7*m8*m9*x2*x3*x4*x5*x7*x9+6*x8*m2*m3*m4*m6*m7*m8*m9*x2*x3*x4*x6*x7*x9+6*x8*m2*m3*m5*m6*m7*m8*m9*x2*x3*x5*x6*x7*x9+6*x8*m2*m4*m5*m6*m7*m8*m9*x2*x4*x5*x6*x7*x9+6*x8*m3*m4*m5*m6*m7*m8*m9*x3*x4*x5*x6*x7*x9+6*x7*x6*m2*m3*m4*m5*m6*m8*x2*x3*x4*x5*m7*x8+5*x8*m10*m3*m4*m5*m8*x3*x4*x5*m9*x10*x9+5*x8*m10*m3*m4*m6*m8*x3*x4*x6*m9*x10*x9+5*x8*m10*m3*m4*m7*m8*x3*x4*x7*m9*x10*x9+5*x8*m10*m3*m5*m6*m8*x3*x5*x6*m9*x10*x9+5*x8*m10*m3*m5*m7*m8*x3*x5*x7*m9*x10*x9+5*x8*m10*m3*m6*m7*m8*x3*x6*x7*m9*x10*x9+5*x8*m10*m4*m5*m6*m8*x4*x5*x6*m9*x10*x9+5*x8*m10*m4*m5*m7*m8*x4*x5*x7*m9*x10*x9+5*x8*m10*m4*m6*m7*m8*x4*x6*x7*m9*x10*x9+5*x8*m10*m5*m6*m7*m8*x5*x6*x7*m9*x10*x9+5*x8*m10*m2*m3*m4*m8*x2*x3*x4*m9*x10*x9+5*x8*m10*m2*m3*m5*m8*x2*x3*x5*m9*x10*x9+5*x8*m10*m2*m3*m6*m8*x2*x3*x6*m9*x10*x9+5*x8*m10*m2*m3*m7*m8*x2*x3*x7*m9*x10*x9+5*x8*m10*m2*m4*m5*m8*x2*x4*x5*m9*x10*x9+5*x8*m10*m2*m4*m6*m8*x2*x4*x6*m9*x10*x9+5*x8*m10*m2*m4*m7*m8*x2*x4*x7*m9*x10*x9+5*x8*m10*m2*m3*m5*m7*m8*x2*x3*x5*x7*x10+5*x8*m10*m2*m3*m6*m7*m8*x2*x3*x6*x7*x10+5*x8*m10*m2*m4*m5*m6*m8*x2*x4*x5*x6*x10+5*x8*m10*m2*m4*m5*m7*m8*x2*x4*x5*x7*x10+5*x8*m10*m2*m4*m6*m7*m8*x2*x4*x6*x7*x10+5*x8*m10*m2*m5*m6*m7*m8*x2*x5*x6*x7*x10+5*x8*m10*m3*m4*m5*m6*m8*x3*x4*x5*x6*x10+5*x8*m10*m3*m4*m5*m7*m8*x3*x4*x5*x7*x10+5*x8*m10*m3*m4*m6*m7*m8*x3*x4*x6*x7*x10+5*x8*m10*m3*m5*m6*m7*m8*x3*x5*x6*x7*x10+5*x8*m10*m4*m5*m6*m7*m8*x4*x5*x6*x7*x10+5*m10*m2*m3*m4*m5*m6*x2*x3*x4*x5*x6*x10+5*m10*m2*m3*m4*m5*m7*x2*x3*x4*x5*x7*x10+5*m10*m2*m3*m4*m6*m7*x2*x3*x4*x6*x7*x10+5*m10*m2*m3*m5*m6*m7*x2*x3*x5*x6*x7*x10+5*m10*m2*m4*m5*m6*m7*x2*x4*x5*x6*x7*x10+5*m10*m3*m4*m5*m6*m7*x3*x4*x5*x6*x7*x10+5*x8*m10*m2*m3*m4*m5*m8*x2*x3*x4*x5*x10+5*x8*m10*m2*m3*m4*m6*m8*x2*x3*x4*x6*x10+5*x8*m10*m2*m3*m4*m7*m8*x2*x3*x4*x7*x10+5*x8*m10*m2*m3*m5*m6*m8*x2*x3*x5*x6*x10+5*m10*m3*m4*m5*m7*x3*x4*x5*x7*m9*x10*x9+5*m10*m3*m4*m6*m7*x3*x4*x6*x7*m9*x10*x9+5*m10*m3*m5*m6*m7*x3*x5*x6*x7*m9*x10*x9+5*m10*m4*m5*m6*m7*x4*x5*x6*x7*m9*x10*x9+5*m10*m2*m3*m4*m5*x2*x3*x4*x5*m9*x10*x9+5*m10*m2*m3*m4*m6*x2*x3*x4*x6*m9*x10*x9+5*m10*m2*m3*m4*m7*x2*x3*x4*x7*m9*x10*x9+5*m10*m2*m3*m5*m6*x2*x3*x5*x6*m9*x10*x9+5*m10*m2*m3*m5*m7*x2*x3*x5*x7*m9*x10*x9+5*m10*m2*m3*m6*m7*x2*x3*x6*x7*m9*x10*x9+5*m10*m2*m4*m5*m6*x2*x4*x5*x6*m9*x10*x9+5*m10*m2*m4*m5*m7*x2*x4*x5*x7*m9*x10*x9+5*m10*m2*m4*m6*m7*x2*x4*x6*x7*m9*x10*x9+5*m10*m2*m5*m6*m7*x2*x5*x6*x7*m9*x10*x9+5*m10*m3*m4*m5*m6*x3*x4*x5*x6*m9*x10*x9+5*x8*m10*m2*m5*m6*m8*x2*x5*x6*m9*x10*x9+5*x8*m10*m2*m5*m7*m8*x2*x5*x7*m9*x10*x9+5*x8*m10*m2*m6*m7*m8*x2*x6*x7*m9*x10*x9+5*x8*m2*m4*m5*m7*m8*m9*x2*x4*x5*x7*x9+5*x8*m2*m4*m6*m7*m8*m9*x2*x4*x6*x7*x9+5*x8*m2*m5*m6*m7*m8*m9*x2*x5*x6*x7*x9+5*x8*m3*m4*m5*m6*m8*m9*x3*x4*x5*x6*x9+5*x8*m3*m4*m5*m7*m8*m9*x3*x4*x5*x7*x9+5*x8*m3*m4*m6*m7*m8*m9*x3*x4*x6*x7*x9+5*x8*m3*m5*m6*m7*m8*m9*x3*x5*x6*x7*x9+5*x8*m4*m5*m6*m7*m8*m9*x4*x5*x6*x7*x9+5*m2*m3*m4*m5*m6*m9*x2*x3*x4*x5*x6*x9+5*m2*m3*m4*m5*m7*m9*x2*x3*x4*x5*x7*x9+5*m2*m3*m4*m6*m7*m9*x2*x3*x4*x6*x7*x9+5*m2*m3*m5*m6*m7*m9*x2*x3*x5*x6*x7*x9+5*m2*m4*m5*m6*m7*m9*x2*x4*x5*x6*x7*x9+5*m3*m4*m5*m6*m7*m9*x3*x4*x5*x6*x7*x9+5*x8*m2*m3*m4*m5*m8*m9*x2*x3*x4*x5*x9+5*x8*m2*m3*m4*m6*m8*m9*x2*x3*x4*x6*x9+5*x8*m2*m3*m4*m7*m8*m9*x2*x3*x4*x7*x9+5*x8*m2*m3*m5*m6*m8*m9*x2*x3*x5*x6*x9+5*x8*m2*m3*m5*m7*m8*m9*x2*x3*x5*x7*x9+5*x8*m2*m3*m6*m7*m8*m9*x2*x3*x6*x7*x9+5*x8*m2*m4*m5*m6*m8*m9*x2*x4*x5*x6*x9+5*x7*m2*m3*m4*m5*m8*x2*x3*x4*x5*m7*x8+5*x6*m2*m3*m4*m5*m6*m8*x2*x3*x4*x5*x8+5*x7*x6*m2*m3*m5*m6*m8*x2*x3*x5*m7*x8+5*x7*x6*m2*m3*m4*m6*m8*x2*x3*x4*m7*x8+5*x7*x6*m2*m4*m5*m6*m8*x2*x4*x5*m7*x8+5*x7*x6*m3*m4*m5*m6*m8*x3*x4*x5*m7*x8+5*x6*m2*m3*m4*m5*m6*m7*x2*x3*x4*x5*x7+3*m10*m5*m6*x5*x6*m9*x10*x9+3*m10*m5*m7*x5*x7*m9*x10*x9+3*m10*m6*m7*x6*x7*m9*x10*x9+3*m10*m2*m4*x2*x4*m9*x10*x9+3*m10*m2*m5*x2*x5*m9*x10*x9+3*m10*m2*m6*x2*x6*m9*x10*x9+3*m10*m2*m7*x2*x7*m9*x10*x9+3*m10*m3*m4*x3*x4*m9*x10*x9+3*m10*m3*m5*x3*x5*m9*x10*x9+3*m10*m3*m6*x3*x6*m9*x10*x9+3*m10*m3*m7*x3*x7*m9*x10*x9+3*m10*m4*m5*x4*x5*m9*x10*x9+3*x8*m10*m2*m8*x2*m9*x10*x9+3*x8*m10*m3*m8*x3*m9*x10*x9+3*x8*m10*m4*m8*x4*m9*x10*x9+3*x8*m10*m5*m8*x5*m9*x10*x9+3*x8*m10*m6*m8*x6*m9*x10*x9+3*x8*m10*m7*m8*x7*m9*x10*x9+3*m10*m2*m3*x2*x3*m9*x10*x9+3*m10*m4*m6*m7*x4*x6*x7*x10+3*m10*m5*m6*m7*x5*x6*x7*x10+3*x8*m10*m2*m3*m8*x2*x3*x10+3*x8*m10*m2*m4*m8*x2*x4*x10+3*x8*m10*m2*m5*m8*x2*x5*x10+3*x8*m10*m2*m6*m8*x2*x6*x10+3*x8*m10*m2*m7*m8*x2*x7*x10+3*x8*m10*m3*m4*m8*x3*x4*x10+3*x8*m10*m3*m5*m8*x3*x5*x10+3*x8*m10*m3*m6*m8*x3*x6*x10+3*x8*m10*m3*m7*m8*x3*x7*x10+3*x8*m10*m4*m5*m8*x4*x5*x10+3*x8*m10*m4*m6*m8*x4*x6*x10+3*x8*m10*m4*m7*m8*x4*x7*x10+3*x8*m10*m5*m6*m8*x5*x6*x10+3*x8*m10*m5*m7*m8*x5*x7*x10+3*x8*m10*m6*m7*m8*x6*x7*x10+3*m10*m2*m3*m4*x2*x3*x4*x10+3*m10*m2*m3*m5*x2*x3*x5*x10+3*m10*m2*m3*m6*x2*x3*x6*x10+3*m10*m2*m3*m7*x2*x3*x7*x10+3*m10*m2*m4*m5*x2*x4*x5*x10+3*m10*m2*m4*m6*x2*x4*x6*x10+3*m10*m2*m4*m7*x2*x4*x7*x10+3*m10*m2*m5*m6*x2*x5*x6*x10+3*m10*m2*m5*m7*x2*x5*x7*x10+3*m10*m2*m6*m7*x2*x6*x7*x10+3*m10*m3*m4*m5*x3*x4*x5*x10+3*m10*m3*m4*m6*x3*x4*x6*x10+3*m10*m3*m4*m7*x3*x4*x7*x10+3*m10*m3*m5*m6*x3*x5*x6*x10+3*m10*m3*m5*m7*x3*x5*x7*x10+3*m10*m3*m6*m7*x3*x6*x7*x10+3*m10*m4*m5*m6*x4*x5*x6*x10+3*m10*m4*m5*m7*x4*x5*x7*x10+3*m10*m4*m6*x4*x6*m9*x10*x9+3*m10*m4*m7*x4*x7*m9*x10*x9+3*x7*x6*m5*m6*m8*x5*m7*x8+3*x7*x6*m4*m6*m8*x4*m7*x8+3*x6*m3*m5*m6*m8*x3*x5*x8+3*x6*m2*m4*m6*m8*x2*x4*x8+3*x7*m2*m5*m8*x2*x5*m7*x8+3*x7*m3*m5*m8*x3*x5*m7*x8+3*x7*m2*m4*m8*x2*x4*m7*x8+3*x7*m3*m4*m8*x3*x4*m7*x8+3*x7*m4*m5*m8*x4*x5*m7*x8+3*x7*m2*m3*m8*x2*x3*m7*x8+3*x7*x6*m2*m6*m8*x2*m7*x8+3*x7*x6*m3*m6*m8*x3*m7*x8+3*x6*m3*m4*m6*m8*x3*x4*x8+3*x6*m4*m5*m6*m8*x4*x5*x8+3*x6*m2*m3*m6*m8*x2*x3*x8+3*m2*m3*m5*m8*x2*x3*x5*x8+3*m2*m3*m4*m8*x2*x3*x4*x8+3*m2*m4*m5*m8*x2*x4*x5*x8+3*m3*m4*m5*m8*x3*x4*x5*x8+3*x6*m2*m5*m6*m8*x2*x5*x8+3*x6*m4*m5*m6*m7*x4*x5*x7+3*x6*m2*m3*m6*m7*x2*x3*x7+3*m2*m3*m5*m7*x2*x3*x5*x7+3*m2*m3*m4*m7*x2*x3*x4*x7+3*m2*m4*m5*m7*x2*x4*x5*x7+3*m3*m4*m5*m7*x3*x4*x5*x7+3*x6*m2*m5*m6*m7*x2*x5*x7+3*x6*m3*m5*m6*m7*x3*x5*x7+3*x6*m2*m4*m6*m7*x2*x4*x7+3*x6*m3*m4*m6*m7*x3*x4*x7+3*m2*m3*m5*m6*x2*x3*x5*x6+3*x4*m2*m3*m4*m6*x2*x3*x6+3*x4*m2*m4*m5*m6*x2*x5*x6+3*x4*m3*m4*m5*m6*x3*x5*x6+3*m2*m3*m4*m5*x2*x3*x4*x5+4*x7*x6*m2*m3*m6*m8*x2*x3*m7*x8+4*x7*m2*m3*m5*m8*x2*x3*x5*m7*x8+4*x7*m2*m3*m4*m8*x2*x3*x4*m7*x8+4*x7*m2*m4*m5*m8*x2*x4*x5*m7*x8+4*x7*m3*m4*m5*m8*x3*x4*x5*m7*x8+4*x7*x6*m2*m5*m6*m8*x2*x5*m7*x8+4*x7*x6*m3*m5*m6*m8*x3*x5*m7*x8+4*x7*x6*m2*m4*m6*m8*x2*x4*m7*x8+4*x7*x6*m3*m4*m6*m8*x3*x4*m7*x8+4*x6*m2*m3*m5*m6*m8*x2*x3*x5*x8+4*x6*m2*m3*m4*m6*m8*x2*x3*x4*x8+4*x6*m2*m4*m5*m6*m8*x2*x4*x5*x8+4*x6*m3*m4*m5*m6*m8*x3*x4*x5*x8+4*m2*m3*m4*m5*m8*x2*x3*x4*x5*x8+4*x7*x6*m4*m5*m6*m8*x4*x5*m7*x8+4*x6*m2*m3*m5*m6*m7*x2*x3*x5*x7+4*x6*m2*m3*m4*m6*m7*x2*x3*x4*x7+4*x6*m2*m4*m5*m6*m7*x2*x4*x5*x7+4*x6*m3*m4*m5*m6*m7*x3*x4*x5*x7+4*m2*m3*m4*m5*m7*x2*x3*x4*x5*x7+4*x4*m2*m3*m4*m5*m6*x2*x3*x5*x6+2*x8*m10*m8*m9*x10*x9+2*m10*m4*m6*x4*x6*x10+2*m10*m4*m7*x4*x7*x10+2*m10*m5*m6*x5*x6*x10+2*m10*m5*m7*x5*x7*x10+2*m10*m6*m7*x6*x7*x10+2*m10*m2*m4*x2*x4*x10+2*m10*m2*m5*x2*x5*x10+2*m10*m2*m6*x2*x6*x10+2*m10*m2*m7*x2*x7*x10+2*m10*m3*m4*x3*x4*x10+2*m10*m3*m5*x3*x5*x10+2*m10*m3*m6*x3*x6*x10+2*m10*m3*m7*x3*x7*x10+2*m10*m4*m5*x4*x5*x10+2*x8*m10*m2*m8*x2*x10+2*x8*m10*m3*m8*x3*x10+2*x8*m10*m4*m8*x4*x10+2*x8*m10*m5*m8*x5*x10+2*x8*m10*m6*m8*x6*x10+2*x8*m10*m7*m8*x7*x10+2*m2*x2*m10*m9*x10*x9+2*m10*m3*x3*m9*x10*x9+2*m10*m4*x4*m9*x10*x9+2*m10*m5*x5*m9*x10*x9+2*m10*m6*x6*m9*x10*x9+2*m10*m7*x7*m9*x10*x9+2*m2*m3*m4*x2*x3*x4+6*x8*m10*m2*m4*m5*m7*m8*x2*x4*x5*x7*m9*x10*x9+6*x8*m10*m2*m4*m6*m7*m8*x2*x4*x6*x7*m9*x10*x9+6*x8*m10*m2*m5*m6*m7*m8*x2*x5*x6*x7*m9*x10*x9+6*x8*m10*m3*m4*m5*m6*m8*x3*x4*x5*x6*m9*x10*x9+6*x8*m10*m3*m4*m5*m7*m8*x3*x4*x5*x7*m9*x10*x9+6*x8*m10*m3*m4*m6*m7*m8*x3*x4*x6*x7*m9*x10*x9+6*x8*m10*m3*m5*m6*m7*m8*x3*x5*x6*x7*m9*x10*x9+6*x8*m10*m4*m5*m6*m7*m8*x4*x5*x6*x7*m9*x10*x9+6*m10*m2*m3*m4*m5*m6*x2*x3*x4*x5*x6*m9*x10*x9+6*m10*m2*m3*m4*m5*m7*x2*x3*x4*x5*x7*m9*x10*x9+6*m10*m2*m3*m4*m6*m7*x2*x3*x4*x6*x7*m9*x10*x9+6*m10*m2*m3*m5*m6*m7*x2*x3*x5*x6*x7*m9*x10*x9+6*m10*m2*m4*m5*m6*m7*x2*x4*x5*x6*x7*m9*x10*x9+6*m10*m3*m4*m5*m6*m7*x3*x4*x5*x6*x7*m9*x10*x9+6*x8*m10*m2*m3*m4*m5*m8*x2*x3*x4*x5*m9*x10*x9+6*x8*m10*m2*m3*m4*m6*m8*x2*x3*x4*x6*m9*x10*x9+6*x8*m10*m2*m3*m4*m7*m8*x2*x3*x4*x7*m9*x10*x9+6*x8*m10*m2*m3*m5*m6*m8*x2*x3*x5*x6*m9*x10*x9+6*m10*m2*m3*m4*m5*m6*m7*x2*x3*x4*x5*x6*x7*x10+6*x8*m10*m2*m3*m5*m6*m7*m8*x2*x3*x5*x6*x7*x10+6*x8*m10*m2*m4*m5*m6*m7*m8*x2*x4*x5*x6*x7*x10+6*x8*m10*m3*m4*m5*m6*m7*m8*x3*x4*x5*x6*x7*x10+6*x8*m10*m2*m3*m4*m5*m6*m8*x2*x3*x4*x5*x6*x10+6*x8*m10*m2*m3*m4*m5*m7*m8*x2*x3*x4*x5*x7*x10+6*x8*m10*m2*m3*m4*m6*m7*m8*x2*x3*x4*x6*x7*x10+6*x8*m10*m2*m3*m5*m7*m8*x2*x3*x5*x7*m9*x10*x9+6*x8*m10*m2*m3*m6*m7*m8*x2*x3*x6*x7*m9*x10*x9+6*x8*m10*m2*m4*m5*m6*m8*x2*x4*x5*x6*m9*x10*x9+2*x6*m4*m6*m8*x4*x8+2*m2*m5*m8*x2*x5*x8+2*m3*m5*m8*x3*x5*x8+2*m2*m4*m8*x2*x4*x8+2*m3*m4*m8*x3*x4*x8+2*m4*m5*m8*x4*x5*x8+2*m2*m3*m8*x2*x3*x8+2*x7*m2*x2*m8*m7*x8+2*x7*m3*m8*x3*m7*x8+2*x7*m5*m8*x5*m7*x8+2*x7*m4*m8*x4*m7*x8+2*x7*x6*m6*m8*m7*x8+2*x6*m2*m6*m8*x2*x8+2*x6*m3*m6*m8*x3*x8+2*x6*m5*m6*m8*x5*x8+2*x6*m3*m6*m7*x3*x7+2*x6*m5*m6*m7*x5*x7+2*x6*m4*m6*m7*x4*x7+2*m2*m5*m7*x2*x5*x7+2*m3*m5*m7*x3*x5*x7+2*m2*m4*m7*x2*x4*x7+2*m3*m4*m7*x3*x4*x7+2*m4*m5*m7*x4*x5*x7+2*x6*m2*m6*m7*x2*x7+2*m2*m3*m7*x2*x3*x7+2*m2*m5*m6*x2*x5*x6+2*m3*m5*m6*x3*x5*x6+2*x4*m2*m4*m6*x2*x6+2*x4*m3*m4*m6*x3*x6+2*x4*m4*m5*m6*x5*x6+2*m2*m3*m6*x2*x3*x6+2*m2*m4*m5*x2*x4*x5+2*m3*m4*m5*x3*x4*x5+2*m2*m3*m5*x2*x3*x5); #m_elseif n == 2; prm s##n = -x2*s1*m1*(1+m10*m3*x10*x3+m3*m5*x3*x5+m4*m5*x4*x5+m3*m6*x3*x6+m5*m6*x5*x6+x4*m4*m6*x6+m3*m7*x3*x7+m5*m7*x5*x7+m4*m7*x4*x7+x6*m6*m7*x7+m3*m8*x3*x8+m5*m8*x5*x8+m4*m8*x4*x8+x6*m6*m8*x8+x7*m8*m7*x8+m3*m4*x3*x4+m10*m9*x10*x9+m10*m4*x4*x10+m10*m5*x5*x10+m10*m6*x6*x10+m10*m7*x7*x10+x8*m10*m8*x10+m10*m3*m4*m5*m7*x3*x4*x5*x7*x10+m10*m3*m4*m6*m7*x3*x4*x6*x7*x10+m10*m3*m5*m6*m7*x3*x5*x6*x7*x10+m10*m4*m5*m6*m7*x4*x5*x6*x7*x10+m10*m3*m4*m5*m6*x3*x4*x5*x6*x10+x8*m10*m3*m4*m5*m8*x3*x4*x5*x10+x8*m10*m3*m4*m6*m8*x3*x4*x6*x10+x8*m10*m3*m4*m7*m8*x3*x4*x7*x10+x8*m10*m3*m5*m6*m8*x3*x5*x6*x10+x8*m10*m3*m5*m7*m8*x3*x5*x7*x10+x8*m10*m3*m6*m7*m8*x3*x6*x7*x10+x8*m10*m4*m5*m6*m8*x4*x5*x6*x10+x8*m10*m4*m5*m7*m8*x4*x5*x7*x10+x8*m10*m4*m6*m7*m8*x4*x6*x7*x10+x8*m10*m5*m6*m7*m8*x5*x6*x7*x10+m10*m4*m6*m7*x4*x6*x7*m9*x10*x9+m10*m5*m6*m7*x5*x6*x7*m9*x10*x9+x8*m10*m3*m4*m8*x3*x4*m9*x10*x9+x8*m10*m3*m5*m8*x3*x5*m9*x10*x9+x8*m10*m3*m6*m8*x3*x6*m9*x10*x9+x8*m10*m3*m7*m8*x3*x7*m9*x10*x9+x8*m10*m4*m5*m8*x4*x5*m9*x10*x9+x8*m10*m4*m6*m8*x4*x6*m9*x10*x9+x8*m10*m4*m7*m8*x4*x7*m9*x10*x9+x8*m10*m5*m6*m8*x5*x6*m9*x10*x9+x8*m10*m5*m7*m8*x5*x7*m9*x10*x9+x8*m10*m6*m7*m8*x6*x7*m9*x10*x9+m10*m3*m4*m5*x3*x4*x5*m9*x10*x9+m10*m3*m4*m6*x3*x4*x6*m9*x10*x9+m10*m3*m4*m7*x3*x4*x7*m9*x10*x9+m10*m3*m5*m6*x3*x5*x6*m9*x10*x9+m10*m3*m5*m7*x3*x5*x7*m9*x10*x9+m10*m3*m6*m7*x3*x6*x7*m9*x10*x9+m10*m4*m5*m6*x4*x5*x6*m9*x10*x9+m10*m4*m5*m7*x4*x5*x7*m9*x10*x9+m9*x9+m3*m4*m5*m6*m9*x3*x4*x5*x6*x9+m3*m4*m5*m7*m9*x3*x4*x5*x7*x9+m3*m4*m6*m7*m9*x3*x4*x6*x7*x9+m3*m5*m6*m7*m9*x3*x5*x6*x7*x9+m4*m5*m6*m7*m9*x4*x5*x6*x7*x9+x8*m3*m4*m5*m8*m9*x3*x4*x5*x9+x8*m3*m4*m6*m8*m9*x3*x4*x6*x9+x8*m3*m4*m7*m8*m9*x3*x4*x7*x9+x8*m3*m5*m6*m8*m9*x3*x5*x6*x9+x8*m3*m5*m7*m8*m9*x3*x5*x7*x9+x8*m3*m6*m7*m8*m9*x3*x6*x7*x9+x8*m4*m5*m6*m8*m9*x4*x5*x6*x9+x8*m4*m5*m7*m8*m9*x4*x5*x7*x9+x8*m4*m6*m7*m8*m9*x4*x6*x7*x9+x8*m5*m6*m7*m8*m9*x5*x6*x7*x9+x8*m3*m4*m8*m9*x3*x4*x9+m3*m4*m5*m9*x3*x4*x5*x9+m3*m4*m6*m9*x3*x4*x6*x9+m3*m4*m7*m9*x3*x4*x7*x9+m3*m5*m6*m9*x3*x5*x6*x9+m3*m5*m7*m9*x3*x5*x7*x9+m3*m6*m7*m9*x3*x6*x7*x9+m4*m5*m6*m9*x4*x5*x6*x9+m4*m5*m7*m9*x4*x5*x7*x9+m4*m6*m7*m9*x4*x6*x7*x9+m5*m6*m7*m9*x5*x6*x7*x9+x8*m3*m5*m8*m9*x3*x5*x9+x8*m3*m6*m8*m9*x3*x6*x9+x8*m3*m7*m8*m9*x3*x7*x9+x8*m4*m5*m8*m9*x4*x5*x9+x8*m4*m6*m8*m9*x4*x6*x9+x8*m4*m7*m8*m9*x4*x7*x9+x8*m5*m6*m8*m9*x5*x6*x9+x8*m5*m7*m8*m9*x5*x7*x9+x8*m6*m7*m8*m9*x6*x7*x9+x8*m10*m3*m4*m5*m6*m7*m8*x3*x4*x5*x6*x7*m9*x10*x9+m3*m4*m9*x3*x4*x9+m3*m5*m9*x3*x5*x9+m3*m6*m9*x3*x6*x9+m3*m7*m9*x3*x7*x9+m4*m5*m9*x4*x5*x9+m4*m6*m9*x4*x6*x9+m4*m7*m9*x4*x7*x9+m5*m6*m9*x5*x6*x9+m5*m7*m9*x5*x7*x9+m6*m7*m9*x6*x7*x9+x8*m3*m8*m9*x3*x9+x8*m4*m8*m9*x4*x9+x8*m5*m8*m9*x5*x9+x8*m6*m8*m9*x6*x9+x8*m7*m8*m9*x7*x9+m3*m9*x3*x9+m4*m9*x4*x9+m5*m9*x5*x9+m6*m9*x6*x9+m7*m9*x7*x9+x8*m8*m9*x9+m10*x10+m8*x8+x8*m3*m4*m5*m6*m7*m8*m9*x3*x4*x5*x6*x7*x9+x8*m10*m3*m4*m5*m8*x3*x4*x5*m9*x10*x9+x8*m10*m3*m4*m6*m8*x3*x4*x6*m9*x10*x9+x8*m10*m3*m4*m7*m8*x3*x4*x7*m9*x10*x9+x8*m10*m3*m5*m6*m8*x3*x5*x6*m9*x10*x9+x8*m10*m3*m5*m7*m8*x3*x5*x7*m9*x10*x9+x8*m10*m3*m6*m7*m8*x3*x6*x7*m9*x10*x9+x8*m10*m4*m5*m6*m8*x4*x5*x6*m9*x10*x9+x8*m10*m4*m5*m7*m8*x4*x5*x7*m9*x10*x9+x8*m10*m4*m6*m7*m8*x4*x6*x7*m9*x10*x9+x8*m10*m5*m6*m7*m8*x5*x6*x7*m9*x10*x9+x8*m10*m3*m4*m5*m6*m8*x3*x4*x5*x6*x10+x8*m10*m3*m4*m5*m7*m8*x3*x4*x5*x7*x10+x8*m10*m3*m4*m6*m7*m8*x3*x4*x6*x7*x10+x8*m10*m3*m5*m6*m7*m8*x3*x5*x6*x7*x10+x8*m10*m4*m5*m6*m7*m8*x4*x5*x6*x7*x10+m10*m3*m4*m5*m6*m7*x3*x4*x5*x6*x7*x10+m10*m3*m4*m5*m7*x3*x4*x5*x7*m9*x10*x9+m10*m3*m4*m6*m7*x3*x4*x6*x7*m9*x10*x9+m10*m3*m5*m6*m7*x3*x5*x6*x7*m9*x10*x9+m10*m4*m5*m6*m7*x4*x5*x6*x7*m9*x10*x9+m10*m3*m4*m5*m6*x3*x4*x5*x6*m9*x10*x9+x8*m3*m4*m5*m6*m8*m9*x3*x4*x5*x6*x9+x8*m3*m4*m5*m7*m8*m9*x3*x4*x5*x7*x9+x8*m3*m4*m6*m7*m8*m9*x3*x4*x6*x7*x9+x8*m3*m5*m6*m7*m8*m9*x3*x5*x6*x7*x9+x8*m4*m5*m6*m7*m8*m9*x4*x5*x6*x7*x9+m3*m4*m5*m6*m7*m9*x3*x4*x5*x6*x7*x9+x7*x6*m3*m4*m5*m6*m8*x3*x4*x5*m7*x8+m10*m5*m6*x5*x6*m9*x10*x9+m10*m5*m7*x5*x7*m9*x10*x9+m10*m6*m7*x6*x7*m9*x10*x9+m10*m3*m4*x3*x4*m9*x10*x9+m10*m3*m5*x3*x5*m9*x10*x9+m10*m3*m6*x3*x6*m9*x10*x9+m10*m3*m7*x3*x7*m9*x10*x9+m10*m4*m5*x4*x5*m9*x10*x9+x8*m10*m3*m8*x3*m9*x10*x9+x8*m10*m4*m8*x4*m9*x10*x9+x8*m10*m5*m8*x5*m9*x10*x9+x8*m10*m6*m8*x6*m9*x10*x9+x8*m10*m7*m8*x7*m9*x10*x9+m10*m4*m6*m7*x4*x6*x7*x10+m10*m5*m6*m7*x5*x6*x7*x10+x8*m10*m3*m4*m8*x3*x4*x10+x8*m10*m3*m5*m8*x3*x5*x10+x8*m10*m3*m6*m8*x3*x6*x10+x8*m10*m3*m7*m8*x3*x7*x10+x8*m10*m4*m5*m8*x4*x5*x10+x8*m10*m4*m6*m8*x4*x6*x10+x8*m10*m4*m7*m8*x4*x7*x10+x8*m10*m5*m6*m8*x5*x6*x10+x8*m10*m5*m7*m8*x5*x7*x10+x8*m10*m6*m7*m8*x6*x7*x10+m10*m3*m4*m5*x3*x4*x5*x10+m10*m3*m4*m6*x3*x4*x6*x10+m10*m3*m4*m7*x3*x4*x7*x10+m10*m3*m5*m6*x3*x5*x6*x10+m10*m3*m5*m7*x3*x5*x7*x10+m10*m3*m6*m7*x3*x6*x7*x10+m10*m4*m5*m6*x4*x5*x6*x10+m10*m4*m5*m7*x4*x5*x7*x10+m10*m4*m6*x4*x6*m9*x10*x9+m10*m4*m7*x4*x7*m9*x10*x9+x7*x6*m5*m6*m8*x5*m7*x8+x7*x6*m4*m6*m8*x4*m7*x8+x6*m3*m5*m6*m8*x3*x5*x8+x7*m3*m5*m8*x3*x5*m7*x8+x7*m3*m4*m8*x3*x4*m7*x8+x7*m4*m5*m8*x4*x5*m7*x8+x7*x6*m3*m6*m8*x3*m7*x8+x6*m3*m4*m6*m8*x3*x4*x8+x6*m4*m5*m6*m8*x4*x5*x8+m3*m4*m5*m8*x3*x4*x5*x8+x6*m4*m5*m6*m7*x4*x5*x7+m3*m4*m5*m7*x3*x4*x5*x7+x6*m3*m5*m6*m7*x3*x5*x7+x6*m3*m4*m6*m7*x3*x4*x7+x4*m3*m4*m5*m6*x3*x5*x6+x7*m3*m4*m5*m8*x3*x4*x5*m7*x8+x7*x6*m3*m5*m6*m8*x3*x5*m7*x8+x7*x6*m3*m4*m6*m8*x3*x4*m7*x8+x6*m3*m4*m5*m6*m8*x3*x4*x5*x8+x7*x6*m4*m5*m6*m8*x4*x5*m7*x8+x6*m3*m4*m5*m6*m7*x3*x4*x5*x7+x8*m10*m8*m9*x10*x9+m10*m4*m6*x4*x6*x10+m10*m4*m7*x4*x7*x10+m10*m5*m6*x5*x6*x10+m10*m5*m7*x5*x7*x10+m10*m6*m7*x6*x7*x10+m10*m3*m4*x3*x4*x10+m10*m3*m5*x3*x5*x10+m10*m3*m6*x3*x6*x10+m10*m3*m7*x3*x7*x10+m10*m4*m5*x4*x5*x10+x8*m10*m3*m8*x3*x10+x8*m10*m4*m8*x4*x10+x8*m10*m5*m8*x5*x10+x8*m10*m6*m8*x6*x10+x8*m10*m7*m8*x7*x10+m10*m3*x3*m9*x10*x9+m10*m4*x4*m9*x10*x9+m10*m5*x5*m9*x10*x9+m10*m6*x6*m9*x10*x9+m10*m7*x7*m9*x10*x9+m7*x7+m6*x6+m5*x5+m4*x4+x8*m10*m3*m4*m5*m6*m8*x3*x4*x5*x6*m9*x10*x9+x8*m10*m3*m4*m5*m7*m8*x3*x4*x5*x7*m9*x10*x9+x8*m10*m3*m4*m6*m7*m8*x3*x4*x6*x7*m9*x10*x9+x8*m10*m3*m5*m6*m7*m8*x3*x5*x6*x7*m9*x10*x9+x8*m10*m4*m5*m6*m7*m8*x4*x5*x6*x7*m9*x10*x9+m10*m3*m4*m5*m6*m7*x3*x4*x5*x6*x7*m9*x10*x9+x8*m10*m3*m4*m5*m6*m7*m8*x3*x4*x5*x6*x7*x10+x6*m4*m6*m8*x4*x8+m3*m5*m8*x3*x5*x8+m3*m4*m8*x3*x4*x8+m4*m5*m8*x4*x5*x8+x7*m3*m8*x3*m7*x8+x7*m5*m8*x5*m7*x8+x7*m4*m8*x4*m7*x8+x7*x6*m6*m8*m7*x8+x6*m3*m6*m8*x3*x8+x6*m5*m6*m8*x5*x8+x6*m3*m6*m7*x3*x7+x6*m5*m6*m7*x5*x7+x6*m4*m6*m7*x4*x7+m3*m5*m7*x3*x5*x7+m3*m4*m7*x3*x4*x7+m4*m5*m7*x4*x5*x7+m3*m5*m6*x3*x5*x6+x4*m3*m4*m6*x3*x6+x4*m4*m5*m6*x5*x6+m3*m4*m5*x3*x4*x5+m3*x3)/m_denom; #m_elseif n == 3; prm s##n = -(1+x10*m2*x2*m10+m2*x2+x5*m2*x2*m5+m4*m5*x4*x5+x6*m2*x2*m6+m5*m6*x5*x6+x4*m4*m6*x6+x7*m2*x2*m7+m5*m7*x5*x7+m4*m7*x4*x7+x6*m6*m7*x7+x8*m2*x2*m8+m5*m8*x5*x8+m4*m8*x4*x8+x6*m6*m8*x8+x7*m8*m7*x8+x4*m2*x2*m4+m10*m9*x10*x9+m10*m4*x4*x10+m10*m5*x5*x10+m10*m6*x6*x10+m10*m7*x7*x10+x8*m10*m8*x10+m10*m4*m5*m6*m7*x4*x5*x6*x7*x10+m10*m2*m4*m5*m6*x2*x4*x5*x6*x10+m10*m2*m4*m5*m7*x2*x4*x5*x7*x10+m10*m2*m4*m6*m7*x2*x4*x6*x7*x10+m10*m2*m5*m6*m7*x2*x5*x6*x7*x10+x8*m10*m2*m5*m6*m8*x2*x5*x6*x10+x8*m10*m2*m5*m7*m8*x2*x5*x7*x10+x8*m10*m2*m6*m7*m8*x2*x6*x7*x10+x8*m10*m4*m5*m6*m8*x4*x5*x6*x10+x8*m10*m4*m5*m7*m8*x4*x5*x7*x10+x8*m10*m4*m6*m7*m8*x4*x6*x7*x10+x8*m10*m5*m6*m7*m8*x5*x6*x7*x10+x8*m10*m2*m4*m5*m8*x2*x4*x5*x10+x8*m10*m2*m4*m6*m8*x2*x4*x6*x10+x8*m10*m2*m4*m7*m8*x2*x4*x7*x10+m10*m4*m6*m7*x4*x6*x7*m9*x10*x9+m10*m5*m6*m7*x5*x6*x7*m9*x10*x9+x8*m10*m2*m4*m8*x2*x4*m9*x10*x9+x8*m10*m2*m5*m8*x2*x5*m9*x10*x9+x8*m10*m2*m6*m8*x2*x6*m9*x10*x9+x8*m10*m2*m7*m8*x2*x7*m9*x10*x9+x8*m10*m4*m5*m8*x4*x5*m9*x10*x9+x8*m10*m4*m6*m8*x4*x6*m9*x10*x9+x8*m10*m4*m7*m8*x4*x7*m9*x10*x9+x8*m10*m5*m6*m8*x5*x6*m9*x10*x9+x8*m10*m5*m7*m8*x5*x7*m9*x10*x9+x8*m10*m6*m7*m8*x6*x7*m9*x10*x9+m10*m2*m4*m5*x2*x4*x5*m9*x10*x9+m10*m2*m4*m6*x2*x4*x6*m9*x10*x9+m10*m2*m4*m7*x2*x4*x7*m9*x10*x9+m10*m2*m5*m6*x2*x5*x6*m9*x10*x9+m10*m2*m5*m7*x2*x5*x7*m9*x10*x9+m10*m2*m6*m7*x2*x6*x7*m9*x10*x9+m10*m4*m5*m6*x4*x5*x6*m9*x10*x9+m10*m4*m5*m7*x4*x5*x7*m9*x10*x9+m9*x9+m2*m4*m5*m6*m9*x2*x4*x5*x6*x9+m2*m4*m5*m7*m9*x2*x4*x5*x7*x9+m2*m4*m6*m7*m9*x2*x4*x6*x7*x9+m2*m5*m6*m7*m9*x2*x5*x6*x7*x9+m4*m5*m6*m7*m9*x4*x5*x6*x7*x9+x8*m2*m4*m5*m8*m9*x2*x4*x5*x9+x8*m2*m4*m6*m8*m9*x2*x4*x6*x9+x8*m2*m4*m7*m8*m9*x2*x4*x7*x9+x8*m2*m5*m6*m8*m9*x2*x5*x6*x9+x8*m2*m5*m7*m8*m9*x2*x5*x7*x9+x8*m2*m6*m7*m8*m9*x2*x6*x7*x9+x8*m4*m5*m6*m8*m9*x4*x5*x6*x9+x8*m4*m5*m7*m8*m9*x4*x5*x7*x9+x8*m4*m6*m7*m8*m9*x4*x6*x7*x9+x8*m5*m6*m7*m8*m9*x5*x6*x7*x9+x8*m2*m4*m8*m9*x2*x4*x9+x8*m2*m5*m8*m9*x2*x5*x9+x8*m2*m6*m8*m9*x2*x6*x9+x8*m2*m7*m8*m9*x2*x7*x9+m2*m4*m5*m9*x2*x4*x5*x9+m2*m4*m6*m9*x2*x4*x6*x9+m2*m4*m7*m9*x2*x4*x7*x9+m2*m5*m6*m9*x2*x5*x6*x9+m2*m5*m7*m9*x2*x5*x7*x9+m2*m6*m7*m9*x2*x6*x7*x9+m4*m5*m6*m9*x4*x5*x6*x9+m4*m5*m7*m9*x4*x5*x7*x9+m4*m6*m7*m9*x4*x6*x7*x9+m5*m6*m7*m9*x5*x6*x7*x9+x8*m4*m5*m8*m9*x4*x5*x9+x8*m4*m6*m8*m9*x4*x6*x9+x8*m4*m7*m8*m9*x4*x7*x9+x8*m5*m6*m8*m9*x5*x6*x9+x8*m5*m7*m8*m9*x5*x7*x9+x8*m6*m7*m8*m9*x6*x7*x9+x8*m10*m2*m4*m5*m6*m7*m8*x2*x4*x5*x6*x7*m9*x10*x9+m2*m6*m9*x2*x6*x9+m2*m7*m9*x2*x7*x9+m4*m5*m9*x4*x5*x9+m4*m6*m9*x4*x6*x9+m4*m7*m9*x4*x7*x9+m5*m6*m9*x5*x6*x9+m5*m7*m9*x5*x7*x9+m6*m7*m9*x6*x7*x9+x8*m2*m8*m9*x2*x9+x8*m4*m8*m9*x4*x9+x8*m5*m8*m9*x5*x9+x8*m6*m8*m9*x6*x9+x8*m7*m8*m9*x7*x9+m2*m4*m9*x2*x4*x9+m2*m5*m9*x2*x5*x9+x9*m2*x2*m9+m4*m9*x4*x9+m5*m9*x5*x9+m6*m9*x6*x9+m7*m9*x7*x9+x8*m8*m9*x9+m10*x10+m8*x8+x8*m2*m4*m5*m6*m7*m8*m9*x2*x4*x5*x6*x7*x9+x8*m10*m4*m5*m6*m8*x4*x5*x6*m9*x10*x9+x8*m10*m4*m5*m7*m8*x4*x5*x7*m9*x10*x9+x8*m10*m4*m6*m7*m8*x4*x6*x7*m9*x10*x9+x8*m10*m5*m6*m7*m8*x5*x6*x7*m9*x10*x9+x8*m10*m2*m4*m5*m8*x2*x4*x5*m9*x10*x9+x8*m10*m2*m4*m6*m8*x2*x4*x6*m9*x10*x9+x8*m10*m2*m4*m7*m8*x2*x4*x7*m9*x10*x9+x8*m10*m2*m4*m5*m6*m8*x2*x4*x5*x6*x10+x8*m10*m2*m4*m5*m7*m8*x2*x4*x5*x7*x10+x8*m10*m2*m4*m6*m7*m8*x2*x4*x6*x7*x10+x8*m10*m2*m5*m6*m7*m8*x2*x5*x6*x7*x10+x8*m10*m4*m5*m6*m7*m8*x4*x5*x6*x7*x10+m10*m2*m4*m5*m6*m7*x2*x4*x5*x6*x7*x10+m10*m4*m5*m6*m7*x4*x5*x6*x7*m9*x10*x9+m10*m2*m4*m5*m6*x2*x4*x5*x6*m9*x10*x9+m10*m2*m4*m5*m7*x2*x4*x5*x7*m9*x10*x9+m10*m2*m4*m6*m7*x2*x4*x6*x7*m9*x10*x9+m10*m2*m5*m6*m7*x2*x5*x6*x7*m9*x10*x9+x8*m10*m2*m5*m6*m8*x2*x5*x6*m9*x10*x9+x8*m10*m2*m5*m7*m8*x2*x5*x7*m9*x10*x9+x8*m10*m2*m6*m7*m8*x2*x6*x7*m9*x10*x9+x8*m2*m4*m5*m7*m8*m9*x2*x4*x5*x7*x9+x8*m2*m4*m6*m7*m8*m9*x2*x4*x6*x7*x9+x8*m2*m5*m6*m7*m8*m9*x2*x5*x6*x7*x9+x8*m4*m5*m6*m7*m8*m9*x4*x5*x6*x7*x9+m2*m4*m5*m6*m7*m9*x2*x4*x5*x6*x7*x9+x8*m2*m4*m5*m6*m8*m9*x2*x4*x5*x6*x9+x7*x6*m2*m4*m5*m6*m8*x2*x4*x5*m7*x8+m10*m5*m6*x5*x6*m9*x10*x9+m10*m5*m7*x5*x7*m9*x10*x9+m10*m6*m7*x6*x7*m9*x10*x9+m10*m2*m4*x2*x4*m9*x10*x9+m10*m2*m5*x2*x5*m9*x10*x9+m10*m2*m6*x2*x6*m9*x10*x9+m10*m2*m7*x2*x7*m9*x10*x9+m10*m4*m5*x4*x5*m9*x10*x9+x8*m10*m2*m8*x2*m9*x10*x9+x8*m10*m4*m8*x4*m9*x10*x9+x8*m10*m5*m8*x5*m9*x10*x9+x8*m10*m6*m8*x6*m9*x10*x9+x8*m10*m7*m8*x7*m9*x10*x9+m10*m4*m6*m7*x4*x6*x7*x10+m10*m5*m6*m7*x5*x6*x7*x10+x8*m10*m2*m4*m8*x2*x4*x10+x8*m10*m2*m5*m8*x2*x5*x10+x8*m10*m2*m6*m8*x2*x6*x10+x8*m10*m2*m7*m8*x2*x7*x10+x8*m10*m4*m5*m8*x4*x5*x10+x8*m10*m4*m6*m8*x4*x6*x10+x8*m10*m4*m7*m8*x4*x7*x10+x8*m10*m5*m6*m8*x5*x6*x10+x8*m10*m5*m7*m8*x5*x7*x10+x8*m10*m6*m7*m8*x6*x7*x10+m10*m2*m4*m5*x2*x4*x5*x10+m10*m2*m4*m6*x2*x4*x6*x10+m10*m2*m4*m7*x2*x4*x7*x10+m10*m2*m5*m6*x2*x5*x6*x10+m10*m2*m5*m7*x2*x5*x7*x10+m10*m2*m6*m7*x2*x6*x7*x10+m10*m4*m5*m6*x4*x5*x6*x10+m10*m4*m5*m7*x4*x5*x7*x10+m10*m4*m6*x4*x6*m9*x10*x9+m10*m4*m7*x4*x7*m9*x10*x9+x7*x6*m5*m6*m8*x5*m7*x8+x7*x6*m4*m6*m8*x4*m7*x8+x6*m2*m4*m6*m8*x2*x4*x8+x7*m2*m5*m8*x2*x5*m7*x8+x7*m2*m4*m8*x2*x4*m7*x8+x7*m4*m5*m8*x4*x5*m7*x8+x7*x6*m2*m6*m8*x2*m7*x8+x6*m4*m5*m6*m8*x4*x5*x8+m2*m4*m5*m8*x2*x4*x5*x8+x6*m2*m5*m6*m8*x2*x5*x8+x6*m4*m5*m6*m7*x4*x5*x7+m2*m4*m5*m7*x2*x4*x5*x7+x6*m2*m5*m6*m7*x2*x5*x7+x6*m2*m4*m6*m7*x2*x4*x7+x4*m2*m4*m5*m6*x2*x5*x6+x7*m2*m4*m5*m8*x2*x4*x5*m7*x8+x7*x6*m2*m5*m6*m8*x2*x5*m7*x8+x7*x6*m2*m4*m6*m8*x2*x4*m7*x8+x6*m2*m4*m5*m6*m8*x2*x4*x5*x8+x7*x6*m4*m5*m6*m8*x4*x5*m7*x8+x6*m2*m4*m5*m6*m7*x2*x4*x5*x7+x8*m10*m8*m9*x10*x9+m10*m4*m6*x4*x6*x10+m10*m4*m7*x4*x7*x10+m10*m5*m6*x5*x6*x10+m10*m5*m7*x5*x7*x10+m10*m6*m7*x6*x7*x10+m10*m2*m4*x2*x4*x10+m10*m2*m5*x2*x5*x10+m10*m2*m6*x2*x6*x10+m10*m2*m7*x2*x7*x10+m10*m4*m5*x4*x5*x10+x8*m10*m2*m8*x2*x10+x8*m10*m4*m8*x4*x10+x8*m10*m5*m8*x5*x10+x8*m10*m6*m8*x6*x10+x8*m10*m7*m8*x7*x10+m2*x2*m10*m9*x10*x9+m10*m4*x4*m9*x10*x9+m10*m5*x5*m9*x10*x9+m10*m6*x6*m9*x10*x9+m10*m7*x7*m9*x10*x9+m7*x7+m6*x6+m5*x5+m4*x4+x8*m10*m2*m4*m5*m7*m8*x2*x4*x5*x7*m9*x10*x9+x8*m10*m2*m4*m6*m7*m8*x2*x4*x6*x7*m9*x10*x9+x8*m10*m2*m5*m6*m7*m8*x2*x5*x6*x7*m9*x10*x9+x8*m10*m4*m5*m6*m7*m8*x4*x5*x6*x7*m9*x10*x9+m10*m2*m4*m5*m6*m7*x2*x4*x5*x6*x7*m9*x10*x9+x8*m10*m2*m4*m5*m6*m7*m8*x2*x4*x5*x6*x7*x10+x8*m10*m2*m4*m5*m6*m8*x2*x4*x5*x6*m9*x10*x9+x6*m4*m6*m8*x4*x8+m2*m5*m8*x2*x5*x8+m2*m4*m8*x2*x4*x8+m4*m5*m8*x4*x5*x8+x7*m2*x2*m8*m7*x8+x7*m5*m8*x5*m7*x8+x7*m4*m8*x4*m7*x8+x7*x6*m6*m8*m7*x8+x6*m2*m6*m8*x2*x8+x6*m5*m6*m8*x5*x8+x6*m5*m6*m7*x5*x7+x6*m4*m6*m7*x4*x7+m2*m5*m7*x2*x5*x7+m2*m4*m7*x2*x4*x7+m4*m5*m7*x4*x5*x7+x6*m2*m6*m7*x2*x7+m2*m5*m6*x2*x5*x6+x4*m2*m4*m6*x2*x6+x4*m4*m5*m6*x5*x6+m2*m4*m5*x2*x4*x5)*x3*s1*m1/m_denom; #m_elseif n == 4; prm s##n = -(m7*x7+1)*(m9*x9+1)*s1*m1*(m10*m2*m3*m5*x10*x2*x3*x5+m10*m2*m3*x10*x2*x3+m10*m2*m5*x10*x2*x5+m10*m3*m5*x10*x3*x5+m2*m3*m5*x2*x3*x5+m10*m2*x10*x2+m10*m3*x10*x3+m10*m5*x10*x5+m2*m3*x2*x3+m2*m5*x2*x5+m3*m5*x3*x5+m10*x10+m2*x2+m3*x3+m5*x5+1)*(m8*x8+1)*x4*(m6*x6+1)/m_denom; #m_elseif n == 5; prm s##n = -(1+m10*m2*m3*x10*x2*x3+x10*m2*x2*m10+m10*m3*x10*x3+m2*x2+x6*m2*x2*m6+m3*m6*x3*x6+x4*m4*m6*x6+x7*m2*x2*m7+m3*m7*x3*x7+m4*m7*x4*x7+x6*m6*m7*x7+x8*m2*x2*m8+m3*m8*x3*x8+m4*m8*x4*x8+x6*m6*m8*x8+x7*m8*m7*x8+x3*m2*x2*m3+x4*m2*x2*m4+m3*m4*x3*x4+m10*m9*x10*x9+m10*m4*x4*x10+m10*m6*x6*x10+m10*m7*x7*x10+x8*m10*m8*x10+m10*m3*m4*m6*m7*x3*x4*x6*x7*x10+m10*m2*m3*m4*m6*x2*x3*x4*x6*x10+m10*m2*m3*m4*m7*x2*x3*x4*x7*x10+m10*m2*m3*m6*m7*x2*x3*x6*x7*x10+m10*m2*m4*m6*m7*x2*x4*x6*x7*x10+x8*m10*m2*m6*m7*m8*x2*x6*x7*x10+x8*m10*m3*m4*m6*m8*x3*x4*x6*x10+x8*m10*m3*m4*m7*m8*x3*x4*x7*x10+x8*m10*m3*m6*m7*m8*x3*x6*x7*x10+x8*m10*m4*m6*m7*m8*x4*x6*x7*x10+x8*m10*m2*m3*m4*m8*x2*x3*x4*x10+x8*m10*m2*m3*m6*m8*x2*x3*x6*x10+x8*m10*m2*m3*m7*m8*x2*x3*x7*x10+x8*m10*m2*m4*m6*m8*x2*x4*x6*x10+x8*m10*m2*m4*m7*m8*x2*x4*x7*x10+m10*m4*m6*m7*x4*x6*x7*m9*x10*x9+x8*m10*m2*m3*m8*x2*x3*m9*x10*x9+x8*m10*m2*m4*m8*x2*x4*m9*x10*x9+x8*m10*m2*m6*m8*x2*x6*m9*x10*x9+x8*m10*m2*m7*m8*x2*x7*m9*x10*x9+x8*m10*m3*m4*m8*x3*x4*m9*x10*x9+x8*m10*m3*m6*m8*x3*x6*m9*x10*x9+x8*m10*m3*m7*m8*x3*x7*m9*x10*x9+x8*m10*m4*m6*m8*x4*x6*m9*x10*x9+x8*m10*m4*m7*m8*x4*x7*m9*x10*x9+x8*m10*m6*m7*m8*x6*x7*m9*x10*x9+m10*m2*m3*m4*x2*x3*x4*m9*x10*x9+m10*m2*m3*m6*x2*x3*x6*m9*x10*x9+m10*m2*m3*m7*x2*x3*x7*m9*x10*x9+m10*m2*m4*m6*x2*x4*x6*m9*x10*x9+m10*m2*m4*m7*x2*x4*x7*m9*x10*x9+m10*m2*m6*m7*x2*x6*x7*m9*x10*x9+m10*m3*m4*m6*x3*x4*x6*m9*x10*x9+m10*m3*m4*m7*x3*x4*x7*m9*x10*x9+m10*m3*m6*m7*x3*x6*x7*m9*x10*x9+m9*x9+m2*m3*m6*m7*m9*x2*x3*x6*x7*x9+m2*m4*m6*m7*m9*x2*x4*x6*x7*x9+m3*m4*m6*m7*m9*x3*x4*x6*x7*x9+x8*m2*m3*m4*m8*m9*x2*x3*x4*x9+x8*m2*m3*m6*m8*m9*x2*x3*x6*x9+x8*m2*m3*m7*m8*m9*x2*x3*x7*x9+x8*m2*m4*m6*m8*m9*x2*x4*x6*x9+x8*m2*m4*m7*m8*m9*x2*x4*x7*x9+x8*m2*m6*m7*m8*m9*x2*x6*x7*x9+x8*m3*m4*m6*m8*m9*x3*x4*x6*x9+x8*m3*m4*m7*m8*m9*x3*x4*x7*x9+x8*m3*m6*m7*m8*m9*x3*x6*x7*x9+x8*m4*m6*m7*m8*m9*x4*x6*x7*x9+m2*m3*m4*m6*m9*x2*x3*x4*x6*x9+m2*m3*m4*m7*m9*x2*x3*x4*x7*x9+x8*m2*m3*m8*m9*x2*x3*x9+x8*m2*m4*m8*m9*x2*x4*x9+x8*m2*m6*m8*m9*x2*x6*x9+x8*m2*m7*m8*m9*x2*x7*x9+x8*m3*m4*m8*m9*x3*x4*x9+m2*m3*m4*m9*x2*x3*x4*x9+m2*m3*m6*m9*x2*x3*x6*x9+m2*m3*m7*m9*x2*x3*x7*x9+m2*m4*m6*m9*x2*x4*x6*x9+m2*m4*m7*m9*x2*x4*x7*x9+m2*m6*m7*m9*x2*x6*x7*x9+m3*m4*m6*m9*x3*x4*x6*x9+m3*m4*m7*m9*x3*x4*x7*x9+m3*m6*m7*m9*x3*x6*x7*x9+m4*m6*m7*m9*x4*x6*x7*x9+x8*m3*m6*m8*m9*x3*x6*x9+x8*m3*m7*m8*m9*x3*x7*x9+x8*m4*m6*m8*m9*x4*x6*x9+x8*m4*m7*m8*m9*x4*x7*x9+x8*m6*m7*m8*m9*x6*x7*x9+x8*m10*m2*m3*m4*m6*m7*m8*x2*x3*x4*x6*x7*m9*x10*x9+m2*m6*m9*x2*x6*x9+m2*m7*m9*x2*x7*x9+m3*m4*m9*x3*x4*x9+m3*m6*m9*x3*x6*x9+m3*m7*m9*x3*x7*x9+m4*m6*m9*x4*x6*x9+m4*m7*m9*x4*x7*x9+m6*m7*m9*x6*x7*x9+m2*m3*m9*x2*x3*x9+x8*m2*m8*m9*x2*x9+x8*m3*m8*m9*x3*x9+x8*m4*m8*m9*x4*x9+x8*m6*m8*m9*x6*x9+x8*m7*m8*m9*x7*x9+m2*m4*m9*x2*x4*x9+x9*m2*x2*m9+m3*m9*x3*x9+m4*m9*x4*x9+m6*m9*x6*x9+m7*m9*x7*x9+x8*m8*m9*x9+m10*x10+m8*x8+x8*m2*m3*m4*m6*m7*m8*m9*x2*x3*x4*x6*x7*x9+x8*m10*m3*m4*m6*m8*x3*x4*x6*m9*x10*x9+x8*m10*m3*m4*m7*m8*x3*x4*x7*m9*x10*x9+x8*m10*m3*m6*m7*m8*x3*x6*x7*m9*x10*x9+x8*m10*m4*m6*m7*m8*x4*x6*x7*m9*x10*x9+x8*m10*m2*m3*m4*m8*x2*x3*x4*m9*x10*x9+x8*m10*m2*m3*m6*m8*x2*x3*x6*m9*x10*x9+x8*m10*m2*m3*m7*m8*x2*x3*x7*m9*x10*x9+x8*m10*m2*m4*m6*m8*x2*x4*x6*m9*x10*x9+x8*m10*m2*m4*m7*m8*x2*x4*x7*m9*x10*x9+x8*m10*m2*m3*m6*m7*m8*x2*x3*x6*x7*x10+x8*m10*m2*m4*m6*m7*m8*x2*x4*x6*x7*x10+x8*m10*m3*m4*m6*m7*m8*x3*x4*x6*x7*x10+m10*m2*m3*m4*m6*m7*x2*x3*x4*x6*x7*x10+x8*m10*m2*m3*m4*m6*m8*x2*x3*x4*x6*x10+x8*m10*m2*m3*m4*m7*m8*x2*x3*x4*x7*x10+m10*m3*m4*m6*m7*x3*x4*x6*x7*m9*x10*x9+m10*m2*m3*m4*m6*x2*x3*x4*x6*m9*x10*x9+m10*m2*m3*m4*m7*x2*x3*x4*x7*m9*x10*x9+m10*m2*m3*m6*m7*x2*x3*x6*x7*m9*x10*x9+m10*m2*m4*m6*m7*x2*x4*x6*x7*m9*x10*x9+x8*m10*m2*m6*m7*m8*x2*x6*x7*m9*x10*x9+x8*m2*m4*m6*m7*m8*m9*x2*x4*x6*x7*x9+x8*m3*m4*m6*m7*m8*m9*x3*x4*x6*x7*x9+m2*m3*m4*m6*m7*m9*x2*x3*x4*x6*x7*x9+x8*m2*m3*m4*m6*m8*m9*x2*x3*x4*x6*x9+x8*m2*m3*m4*m7*m8*m9*x2*x3*x4*x7*x9+x8*m2*m3*m6*m7*m8*m9*x2*x3*x6*x7*x9+x7*x6*m2*m3*m4*m6*m8*x2*x3*x4*m7*x8+m10*m6*m7*x6*x7*m9*x10*x9+m10*m2*m4*x2*x4*m9*x10*x9+m10*m2*m6*x2*x6*m9*x10*x9+m10*m2*m7*x2*x7*m9*x10*x9+m10*m3*m4*x3*x4*m9*x10*x9+m10*m3*m6*x3*x6*m9*x10*x9+m10*m3*m7*x3*x7*m9*x10*x9+x8*m10*m2*m8*x2*m9*x10*x9+x8*m10*m3*m8*x3*m9*x10*x9+x8*m10*m4*m8*x4*m9*x10*x9+x8*m10*m6*m8*x6*m9*x10*x9+x8*m10*m7*m8*x7*m9*x10*x9+m10*m2*m3*x2*x3*m9*x10*x9+m10*m4*m6*m7*x4*x6*x7*x10+x8*m10*m2*m3*m8*x2*x3*x10+x8*m10*m2*m4*m8*x2*x4*x10+x8*m10*m2*m6*m8*x2*x6*x10+x8*m10*m2*m7*m8*x2*x7*x10+x8*m10*m3*m4*m8*x3*x4*x10+x8*m10*m3*m6*m8*x3*x6*x10+x8*m10*m3*m7*m8*x3*x7*x10+x8*m10*m4*m6*m8*x4*x6*x10+x8*m10*m4*m7*m8*x4*x7*x10+x8*m10*m6*m7*m8*x6*x7*x10+m10*m2*m3*m4*x2*x3*x4*x10+m10*m2*m3*m6*x2*x3*x6*x10+m10*m2*m3*m7*x2*x3*x7*x10+m10*m2*m4*m6*x2*x4*x6*x10+m10*m2*m4*m7*x2*x4*x7*x10+m10*m2*m6*m7*x2*x6*x7*x10+m10*m3*m4*m6*x3*x4*x6*x10+m10*m3*m4*m7*x3*x4*x7*x10+m10*m3*m6*m7*x3*x6*x7*x10+m10*m4*m6*x4*x6*m9*x10*x9+m10*m4*m7*x4*x7*m9*x10*x9+x7*x6*m4*m6*m8*x4*m7*x8+x6*m2*m4*m6*m8*x2*x4*x8+x7*m2*m4*m8*x2*x4*m7*x8+x7*m3*m4*m8*x3*x4*m7*x8+x7*m2*m3*m8*x2*x3*m7*x8+x7*x6*m2*m6*m8*x2*m7*x8+x7*x6*m3*m6*m8*x3*m7*x8+x6*m3*m4*m6*m8*x3*x4*x8+x6*m2*m3*m6*m8*x2*x3*x8+m2*m3*m4*m8*x2*x3*x4*x8+x6*m2*m3*m6*m7*x2*x3*x7+m2*m3*m4*m7*x2*x3*x4*x7+x6*m2*m4*m6*m7*x2*x4*x7+x6*m3*m4*m6*m7*x3*x4*x7+x4*m2*m3*m4*m6*x2*x3*x6+x7*x6*m2*m3*m6*m8*x2*x3*m7*x8+x7*m2*m3*m4*m8*x2*x3*x4*m7*x8+x7*x6*m2*m4*m6*m8*x2*x4*m7*x8+x7*x6*m3*m4*m6*m8*x3*x4*m7*x8+x6*m2*m3*m4*m6*m8*x2*x3*x4*x8+x6*m2*m3*m4*m6*m7*x2*x3*x4*x7+x8*m10*m8*m9*x10*x9+m10*m4*m6*x4*x6*x10+m10*m4*m7*x4*x7*x10+m10*m6*m7*x6*x7*x10+m10*m2*m4*x2*x4*x10+m10*m2*m6*x2*x6*x10+m10*m2*m7*x2*x7*x10+m10*m3*m4*x3*x4*x10+m10*m3*m6*x3*x6*x10+m10*m3*m7*x3*x7*x10+x8*m10*m2*m8*x2*x10+x8*m10*m3*m8*x3*x10+x8*m10*m4*m8*x4*x10+x8*m10*m6*m8*x6*x10+x8*m10*m7*m8*x7*x10+m2*x2*m10*m9*x10*x9+m10*m3*x3*m9*x10*x9+m10*m4*x4*m9*x10*x9+m10*m6*x6*m9*x10*x9+m10*m7*x7*m9*x10*x9+m2*m3*m4*x2*x3*x4+m7*x7+m6*x6+m4*x4+x8*m10*m2*m4*m6*m7*m8*x2*x4*x6*x7*m9*x10*x9+x8*m10*m3*m4*m6*m7*m8*x3*x4*x6*x7*m9*x10*x9+m10*m2*m3*m4*m6*m7*x2*x3*x4*x6*x7*m9*x10*x9+x8*m10*m2*m3*m4*m6*m8*x2*x3*x4*x6*m9*x10*x9+x8*m10*m2*m3*m4*m7*m8*x2*x3*x4*x7*m9*x10*x9+x8*m10*m2*m3*m4*m6*m7*m8*x2*x3*x4*x6*x7*x10+x8*m10*m2*m3*m6*m7*m8*x2*x3*x6*x7*m9*x10*x9+x6*m4*m6*m8*x4*x8+m2*m4*m8*x2*x4*x8+m3*m4*m8*x3*x4*x8+m2*m3*m8*x2*x3*x8+x7*m2*x2*m8*m7*x8+x7*m3*m8*x3*m7*x8+x7*m4*m8*x4*m7*x8+x7*x6*m6*m8*m7*x8+x6*m2*m6*m8*x2*x8+x6*m3*m6*m8*x3*x8+x6*m3*m6*m7*x3*x7+x6*m4*m6*m7*x4*x7+m2*m4*m7*x2*x4*x7+m3*m4*m7*x3*x4*x7+x6*m2*m6*m7*x2*x7+m2*m3*m7*x2*x3*x7+x4*m2*m4*m6*x2*x6+x4*m3*m4*m6*x3*x6+m2*m3*m6*x2*x3*x6+m3*x3)*m1*s1*x5/m_denom; #m_elseif n == 6; prm s##n = -(m8*x8+1)*(m10*m2*m3*m4*m5*x10*x2*x3*x4*x5+m10*m2*m3*m4*x10*x2*x3*x4+m10*m2*m3*m5*x10*x2*x3*x5+m10*m2*m4*m5*x10*x2*x4*x5+m10*m3*m4*m5*x10*x3*x4*x5+m2*m3*m4*m5*x2*x3*x4*x5+m10*m2*m3*x10*x2*x3+m10*m2*m4*x10*x2*x4+m10*m2*m5*x10*x2*x5+m10*m3*m4*x10*x3*x4+m10*m3*m5*x10*x3*x5+m10*m4*m5*x10*x4*x5+m2*m3*m4*x2*x3*x4+m2*m3*m5*x2*x3*x5+m2*m4*m5*x2*x4*x5+m3*m4*m5*x3*x4*x5+m10*m2*x10*x2+m10*m3*x10*x3+m10*m4*x10*x4+m10*m5*x10*x5+m2*m3*x2*x3+m2*m4*x2*x4+m2*m5*x2*x5+m3*m4*x3*x4+m3*m5*x3*x5+m4*m5*x4*x5+m10*x10+m2*x2+m3*x3+m4*x4+m5*x5+1)*m1*s1*(m9*x9+1)*x6*(m7*x7+1)/m_denom; #m_elseif n == 7; prm s##n = -(m9*x9+1)*s1*m1*(m10*m2*m3*m4*m5*m6*x10*x2*x3*x4*x5*x6+m10*m2*m3*m4*m5*x10*x2*x3*x4*x5+m10*m2*m3*m4*m6*x10*x2*x3*x4*x6+m10*m2*m3*m5*m6*x10*x2*x3*x5*x6+m10*m2*m4*m5*m6*x10*x2*x4*x5*x6+m10*m3*m4*m5*m6*x10*x3*x4*x5*x6+m2*m3*m4*m5*m6*x2*x3*x4*x5*x6+m10*m2*m3*m4*x10*x2*x3*x4+m10*m2*m3*m5*x10*x2*x3*x5+m10*m2*m3*m6*x10*x2*x3*x6+m10*m2*m4*m5*x10*x2*x4*x5+m10*m2*m4*m6*x10*x2*x4*x6+m10*m2*m5*m6*x10*x2*x5*x6+m10*m3*m4*m5*x10*x3*x4*x5+m10*m3*m4*m6*x10*x3*x4*x6+m10*m3*m5*m6*x10*x3*x5*x6+m10*m4*m5*m6*x10*x4*x5*x6+m2*m3*m4*m5*x2*x3*x4*x5+m2*m3*m4*m6*x2*x3*x4*x6+m2*m3*m5*m6*x2*x3*x5*x6+m2*m4*m5*m6*x2*x4*x5*x6+m3*m4*m5*m6*x3*x4*x5*x6+m10*m2*m3*x10*x2*x3+m10*m2*m4*x10*x2*x4+m10*m2*m5*x10*x2*x5+m10*m2*m6*x10*x2*x6+m10*m3*m4*x10*x3*x4+m10*m3*m5*x10*x3*x5+m10*m3*m6*x10*x3*x6+m10*m4*m5*x10*x4*x5+m10*m4*m6*x10*x4*x6+m10*m5*m6*x10*x5*x6+m2*m3*m4*x2*x3*x4+m2*m3*m5*x2*x3*x5+m2*m3*m6*x2*x3*x6+m2*m4*m5*x2*x4*x5+m2*m4*m6*x2*x4*x6+m2*m5*m6*x2*x5*x6+m3*m4*m5*x3*x4*x5+m3*m4*m6*x3*x4*x6+m3*m5*m6*x3*x5*x6+m4*m5*m6*x4*x5*x6+m10*m2*x10*x2+m10*m3*x10*x3+m10*m4*x10*x4+m10*m5*x10*x5+m10*m6*x10*x6+m2*m3*x2*x3+m2*m4*x2*x4+m2*m5*x2*x5+m2*m6*x2*x6+m3*m4*x3*x4+m3*m5*x3*x5+m3*m6*x3*x6+m4*m5*x4*x5+m4*m6*x4*x6+m5*m6*x5*x6+m10*x10+m2*x2+m3*x3+m4*x4+m5*x5+m6*x6+1)*x7*(m8*x8+1)/m_denom; #m_elseif n == 8; prm s##n = -(m10*m2*m3*m4*m5*m6*m7*x10*x2*x3*x4*x5*x6*x7+m10*m2*m3*m4*m5*m6*x10*x2*x3*x4*x5*x6+m10*m2*m3*m4*m5*m7*x10*x2*x3*x4*x5*x7+m10*m2*m3*m4*m6*m7*x10*x2*x3*x4*x6*x7+m10*m2*m3*m5*m6*m7*x10*x2*x3*x5*x6*x7+m10*m2*m4*m5*m6*m7*x10*x2*x4*x5*x6*x7+m10*m3*m4*m5*m6*m7*x10*x3*x4*x5*x6*x7+m2*m3*m4*m5*m6*m7*x2*x3*x4*x5*x6*x7+m10*m2*m3*m4*m5*x10*x2*x3*x4*x5+m10*m2*m3*m4*m6*x10*x2*x3*x4*x6+m10*m2*m3*m4*m7*x10*x2*x3*x4*x7+m10*m2*m3*m5*m6*x10*x2*x3*x5*x6+m10*m2*m3*m5*m7*x10*x2*x3*x5*x7+m10*m2*m3*m6*m7*x10*x2*x3*x6*x7+m10*m2*m4*m5*m6*x10*x2*x4*x5*x6+m10*m2*m4*m5*m7*x10*x2*x4*x5*x7+m10*m2*m4*m6*m7*x10*x2*x4*x6*x7+m10*m2*m5*m6*m7*x10*x2*x5*x6*x7+m10*m3*m4*m5*m6*x10*x3*x4*x5*x6+m10*m3*m4*m5*m7*x10*x3*x4*x5*x7+m10*m3*m4*m6*m7*x10*x3*x4*x6*x7+m10*m3*m5*m6*m7*x10*x3*x5*x6*x7+m10*m4*m5*m6*m7*x10*x4*x5*x6*x7+m2*m3*m4*m5*m6*x2*x3*x4*x5*x6+m2*m3*m4*m5*m7*x2*x3*x4*x5*x7+m2*m3*m4*m6*m7*x2*x3*x4*x6*x7+m2*m3*m5*m6*m7*x2*x3*x5*x6*x7+m2*m4*m5*m6*m7*x2*x4*x5*x6*x7+m3*m4*m5*m6*m7*x3*x4*x5*x6*x7+m10*m2*m3*m4*x10*x2*x3*x4+m10*m2*m3*m5*x10*x2*x3*x5+m10*m2*m3*m6*x10*x2*x3*x6+m10*m2*m3*m7*x10*x2*x3*x7+m10*m2*m4*m5*x10*x2*x4*x5+m10*m2*m4*m6*x10*x2*x4*x6+m10*m2*m4*m7*x10*x2*x4*x7+m10*m2*m5*m6*x10*x2*x5*x6+m10*m2*m5*m7*x10*x2*x5*x7+m10*m2*m6*m7*x10*x2*x6*x7+m10*m3*m4*m5*x10*x3*x4*x5+m10*m3*m4*m6*x10*x3*x4*x6+m10*m3*m4*m7*x10*x3*x4*x7+m10*m3*m5*m6*x10*x3*x5*x6+m10*m3*m5*m7*x10*x3*x5*x7+m10*m3*m6*m7*x10*x3*x6*x7+m10*m4*m5*m6*x10*x4*x5*x6+m10*m4*m5*m7*x10*x4*x5*x7+m10*m4*m6*m7*x10*x4*x6*x7+m10*m5*m6*m7*x10*x5*x6*x7+m2*m3*m4*m5*x2*x3*x4*x5+m2*m3*m4*m6*x2*x3*x4*x6+m2*m3*m4*m7*x2*x3*x4*x7+m2*m3*m5*m6*x2*x3*x5*x6+m2*m3*m5*m7*x2*x3*x5*x7+m2*m3*m6*m7*x2*x3*x6*x7+m2*m4*m5*m6*x2*x4*x5*x6+m2*m4*m5*m7*x2*x4*x5*x7+m2*m4*m6*m7*x2*x4*x6*x7+m2*m5*m6*m7*x2*x5*x6*x7+m3*m4*m5*m6*x3*x4*x5*x6+m3*m4*m5*m7*x3*x4*x5*x7+m3*m4*m6*m7*x3*x4*x6*x7+m3*m5*m6*m7*x3*x5*x6*x7+m4*m5*m6*m7*x4*x5*x6*x7+m10*m2*m3*x10*x2*x3+m10*m2*m4*x10*x2*x4+m10*m2*m5*x10*x2*x5+m10*m2*m6*x10*x2*x6+m10*m2*m7*x10*x2*x7+m10*m3*m4*x10*x3*x4+m10*m3*m5*x10*x3*x5+m10*m3*m6*x10*x3*x6+m10*m3*m7*x10*x3*x7+m10*m4*m5*x10*x4*x5+m10*m4*m6*x10*x4*x6+m10*m4*m7*x10*x4*x7+m10*m5*m6*x10*x5*x6+m10*m5*m7*x10*x5*x7+m10*m6*m7*x10*x6*x7+m2*m3*m4*x2*x3*x4+m2*m3*m5*x2*x3*x5+m2*m3*m6*x2*x3*x6+m2*m3*m7*x2*x3*x7+m2*m4*m5*x2*x4*x5+m2*m4*m6*x2*x4*x6+m2*m4*m7*x2*x4*x7+m2*m5*m6*x2*x5*x6+m2*m5*m7*x2*x5*x7+m2*m6*m7*x2*x6*x7+m3*m4*m5*x3*x4*x5+m3*m4*m6*x3*x4*x6+m3*m4*m7*x3*x4*x7+m3*m5*m6*x3*x5*x6+m3*m5*m7*x3*x5*x7+m3*m6*m7*x3*x6*x7+m4*m5*m6*x4*x5*x6+m4*m5*m7*x4*x5*x7+m4*m6*m7*x4*x6*x7+m5*m6*m7*x5*x6*x7+m10*m2*x10*x2+m10*m3*x10*x3+m10*m4*x10*x4+m10*m5*x10*x5+m10*m6*x10*x6+m10*m7*x10*x7+m2*m3*x2*x3+m2*m4*x2*x4+m2*m5*x2*x5+m2*m6*x2*x6+m2*m7*x2*x7+m3*m4*x3*x4+m3*m5*x3*x5+m3*m6*x3*x6+m3*m7*x3*x7+m4*m5*x4*x5+m4*m6*x4*x6+m4*m7*x4*x7+m5*m6*x5*x6+m5*m7*x5*x7+m6*m7*x6*x7+m10*x10+m2*x2+m3*x3+m4*x4+m5*x5+m6*x6+m7*x7+1)*m1*s1*x8*(m9*x9+1)/m_denom; #m_elseif n == 9; prm s##n = -x9*s1*m1*(1+m10*m2*m3*x10*x2*x3+x10*m2*x2*m10+m10*m3*x10*x3+m2*x2+x5*m2*x2*m5+m3*m5*x3*x5+m4*m5*x4*x5+x6*m2*x2*m6+m3*m6*x3*x6+m5*m6*x5*x6+x4*m4*m6*x6+x7*m2*x2*m7+m3*m7*x3*x7+m5*m7*x5*x7+m4*m7*x4*x7+x6*m6*m7*x7+x8*m2*x2*m8+m3*m8*x3*x8+m5*m8*x5*x8+m4*m8*x4*x8+x6*m6*m8*x8+x7*m8*m7*x8+x3*m2*x2*m3+x4*m2*x2*m4+m3*m4*x3*x4+m10*m4*x4*x10+m10*m5*x5*x10+m10*m6*x6*x10+m10*m7*x7*x10+x8*m10*m8*x10+m10*m3*m4*m5*m7*x3*x4*x5*x7*x10+m10*m3*m4*m6*m7*x3*x4*x6*x7*x10+m10*m3*m5*m6*m7*x3*x5*x6*x7*x10+m10*m4*m5*m6*m7*x4*x5*x6*x7*x10+m10*m2*m3*m4*m5*x2*x3*x4*x5*x10+m10*m2*m3*m4*m6*x2*x3*x4*x6*x10+m10*m2*m3*m4*m7*x2*x3*x4*x7*x10+m10*m2*m3*m5*m6*x2*x3*x5*x6*x10+m10*m2*m3*m5*m7*x2*x3*x5*x7*x10+m10*m2*m3*m6*m7*x2*x3*x6*x7*x10+m10*m2*m4*m5*m6*x2*x4*x5*x6*x10+m10*m2*m4*m5*m7*x2*x4*x5*x7*x10+m10*m2*m4*m6*m7*x2*x4*x6*x7*x10+m10*m2*m5*m6*m7*x2*x5*x6*x7*x10+m10*m3*m4*m5*m6*x3*x4*x5*x6*x10+x8*m10*m2*m5*m6*m8*x2*x5*x6*x10+x8*m10*m2*m5*m7*m8*x2*x5*x7*x10+x8*m10*m2*m6*m7*m8*x2*x6*x7*x10+x8*m10*m3*m4*m5*m8*x3*x4*x5*x10+x8*m10*m3*m4*m6*m8*x3*x4*x6*x10+x8*m10*m3*m4*m7*m8*x3*x4*x7*x10+x8*m10*m3*m5*m6*m8*x3*x5*x6*x10+x8*m10*m3*m5*m7*m8*x3*x5*x7*x10+x8*m10*m3*m6*m7*m8*x3*x6*x7*x10+x8*m10*m4*m5*m6*m8*x4*x5*x6*x10+x8*m10*m4*m5*m7*m8*x4*x5*x7*x10+x8*m10*m4*m6*m7*m8*x4*x6*x7*x10+x8*m10*m5*m6*m7*m8*x5*x6*x7*x10+x8*m10*m2*m3*m4*m8*x2*x3*x4*x10+x8*m10*m2*m3*m5*m8*x2*x3*x5*x10+x8*m10*m2*m3*m6*m8*x2*x3*x6*x10+x8*m10*m2*m3*m7*m8*x2*x3*x7*x10+x8*m10*m2*m4*m5*m8*x2*x4*x5*x10+x8*m10*m2*m4*m6*m8*x2*x4*x6*x10+x8*m10*m2*m4*m7*m8*x2*x4*x7*x10+x8*m10*m2*m3*m4*m5*m6*m7*m8*x2*x3*x4*x5*x6*x7*x10+m10*x10+m8*x8+x7*x6*m2*m3*m4*m5*m6*m8*x2*x3*x4*x5*m7*x8+x8*m10*m2*m3*m5*m7*m8*x2*x3*x5*x7*x10+x8*m10*m2*m3*m6*m7*m8*x2*x3*x6*x7*x10+x8*m10*m2*m4*m5*m6*m8*x2*x4*x5*x6*x10+x8*m10*m2*m4*m5*m7*m8*x2*x4*x5*x7*x10+x8*m10*m2*m4*m6*m7*m8*x2*x4*x6*x7*x10+x8*m10*m2*m5*m6*m7*m8*x2*x5*x6*x7*x10+x8*m10*m3*m4*m5*m6*m8*x3*x4*x5*x6*x10+x8*m10*m3*m4*m5*m7*m8*x3*x4*x5*x7*x10+x8*m10*m3*m4*m6*m7*m8*x3*x4*x6*x7*x10+x8*m10*m3*m5*m6*m7*m8*x3*x5*x6*x7*x10+x8*m10*m4*m5*m6*m7*m8*x4*x5*x6*x7*x10+m10*m2*m3*m4*m5*m6*x2*x3*x4*x5*x6*x10+m10*m2*m3*m4*m5*m7*x2*x3*x4*x5*x7*x10+m10*m2*m3*m4*m6*m7*x2*x3*x4*x6*x7*x10+m10*m2*m3*m5*m6*m7*x2*x3*x5*x6*x7*x10+m10*m2*m4*m5*m6*m7*x2*x4*x5*x6*x7*x10+m10*m3*m4*m5*m6*m7*x3*x4*x5*x6*x7*x10+x8*m10*m2*m3*m4*m5*m8*x2*x3*x4*x5*x10+x8*m10*m2*m3*m4*m6*m8*x2*x3*x4*x6*x10+x8*m10*m2*m3*m4*m7*m8*x2*x3*x4*x7*x10+x8*m10*m2*m3*m5*m6*m8*x2*x3*x5*x6*x10+x7*m2*m3*m4*m5*m8*x2*x3*x4*x5*m7*x8+x6*m2*m3*m4*m5*m6*m8*x2*x3*x4*x5*x8+x7*x6*m2*m3*m5*m6*m8*x2*x3*x5*m7*x8+x7*x6*m2*m3*m4*m6*m8*x2*x3*x4*m7*x8+x7*x6*m2*m4*m5*m6*m8*x2*x4*x5*m7*x8+x7*x6*m3*m4*m5*m6*m8*x3*x4*x5*m7*x8+x6*m2*m3*m4*m5*m6*m7*x2*x3*x4*x5*x7+m10*m4*m6*m7*x4*x6*x7*x10+m10*m5*m6*m7*x5*x6*x7*x10+x8*m10*m2*m3*m8*x2*x3*x10+x8*m10*m2*m4*m8*x2*x4*x10+x8*m10*m2*m5*m8*x2*x5*x10+x8*m10*m2*m6*m8*x2*x6*x10+x8*m10*m2*m7*m8*x2*x7*x10+x8*m10*m3*m4*m8*x3*x4*x10+x8*m10*m3*m5*m8*x3*x5*x10+x8*m10*m3*m6*m8*x3*x6*x10+x8*m10*m3*m7*m8*x3*x7*x10+x8*m10*m4*m5*m8*x4*x5*x10+x8*m10*m4*m6*m8*x4*x6*x10+x8*m10*m4*m7*m8*x4*x7*x10+x8*m10*m5*m6*m8*x5*x6*x10+x8*m10*m5*m7*m8*x5*x7*x10+x8*m10*m6*m7*m8*x6*x7*x10+m10*m2*m3*m4*x2*x3*x4*x10+m10*m2*m3*m5*x2*x3*x5*x10+m10*m2*m3*m6*x2*x3*x6*x10+m10*m2*m3*m7*x2*x3*x7*x10+m10*m2*m4*m5*x2*x4*x5*x10+m10*m2*m4*m6*x2*x4*x6*x10+m10*m2*m4*m7*x2*x4*x7*x10+m10*m2*m5*m6*x2*x5*x6*x10+m10*m2*m5*m7*x2*x5*x7*x10+m10*m2*m6*m7*x2*x6*x7*x10+m10*m3*m4*m5*x3*x4*x5*x10+m10*m3*m4*m6*x3*x4*x6*x10+m10*m3*m4*m7*x3*x4*x7*x10+m10*m3*m5*m6*x3*x5*x6*x10+m10*m3*m5*m7*x3*x5*x7*x10+m10*m3*m6*m7*x3*x6*x7*x10+m10*m4*m5*m6*x4*x5*x6*x10+m10*m4*m5*m7*x4*x5*x7*x10+x7*x6*m5*m6*m8*x5*m7*x8+x7*x6*m4*m6*m8*x4*m7*x8+x6*m3*m5*m6*m8*x3*x5*x8+x6*m2*m4*m6*m8*x2*x4*x8+x7*m2*m5*m8*x2*x5*m7*x8+x7*m3*m5*m8*x3*x5*m7*x8+x7*m2*m4*m8*x2*x4*m7*x8+x7*m3*m4*m8*x3*x4*m7*x8+x7*m4*m5*m8*x4*x5*m7*x8+x7*m2*m3*m8*x2*x3*m7*x8+x7*x6*m2*m6*m8*x2*m7*x8+x7*x6*m3*m6*m8*x3*m7*x8+x6*m3*m4*m6*m8*x3*x4*x8+x6*m4*m5*m6*m8*x4*x5*x8+x6*m2*m3*m6*m8*x2*x3*x8+m2*m3*m5*m8*x2*x3*x5*x8+m2*m3*m4*m8*x2*x3*x4*x8+m2*m4*m5*m8*x2*x4*x5*x8+m3*m4*m5*m8*x3*x4*x5*x8+x6*m2*m5*m6*m8*x2*x5*x8+x6*m4*m5*m6*m7*x4*x5*x7+x6*m2*m3*m6*m7*x2*x3*x7+m2*m3*m5*m7*x2*x3*x5*x7+m2*m3*m4*m7*x2*x3*x4*x7+m2*m4*m5*m7*x2*x4*x5*x7+m3*m4*m5*m7*x3*x4*x5*x7+x6*m2*m5*m6*m7*x2*x5*x7+x6*m3*m5*m6*m7*x3*x5*x7+x6*m2*m4*m6*m7*x2*x4*x7+x6*m3*m4*m6*m7*x3*x4*x7+m2*m3*m5*m6*x2*x3*x5*x6+x4*m2*m3*m4*m6*x2*x3*x6+x4*m2*m4*m5*m6*x2*x5*x6+x4*m3*m4*m5*m6*x3*x5*x6+m2*m3*m4*m5*x2*x3*x4*x5+x7*x6*m2*m3*m6*m8*x2*x3*m7*x8+x7*m2*m3*m5*m8*x2*x3*x5*m7*x8+x7*m2*m3*m4*m8*x2*x3*x4*m7*x8+x7*m2*m4*m5*m8*x2*x4*x5*m7*x8+x7*m3*m4*m5*m8*x3*x4*x5*m7*x8+x7*x6*m2*m5*m6*m8*x2*x5*m7*x8+x7*x6*m3*m5*m6*m8*x3*x5*m7*x8+x7*x6*m2*m4*m6*m8*x2*x4*m7*x8+x7*x6*m3*m4*m6*m8*x3*x4*m7*x8+x6*m2*m3*m5*m6*m8*x2*x3*x5*x8+x6*m2*m3*m4*m6*m8*x2*x3*x4*x8+x6*m2*m4*m5*m6*m8*x2*x4*x5*x8+x6*m3*m4*m5*m6*m8*x3*x4*x5*x8+m2*m3*m4*m5*m8*x2*x3*x4*x5*x8+x7*x6*m4*m5*m6*m8*x4*x5*m7*x8+x6*m2*m3*m5*m6*m7*x2*x3*x5*x7+x6*m2*m3*m4*m6*m7*x2*x3*x4*x7+x6*m2*m4*m5*m6*m7*x2*x4*x5*x7+x6*m3*m4*m5*m6*m7*x3*x4*x5*x7+m2*m3*m4*m5*m7*x2*x3*x4*x5*x7+x4*m2*m3*m4*m5*m6*x2*x3*x5*x6+m10*m4*m6*x4*x6*x10+m10*m4*m7*x4*x7*x10+m10*m5*m6*x5*x6*x10+m10*m5*m7*x5*x7*x10+m10*m6*m7*x6*x7*x10+m10*m2*m4*x2*x4*x10+m10*m2*m5*x2*x5*x10+m10*m2*m6*x2*x6*x10+m10*m2*m7*x2*x7*x10+m10*m3*m4*x3*x4*x10+m10*m3*m5*x3*x5*x10+m10*m3*m6*x3*x6*x10+m10*m3*m7*x3*x7*x10+m10*m4*m5*x4*x5*x10+x8*m10*m2*m8*x2*x10+x8*m10*m3*m8*x3*x10+x8*m10*m4*m8*x4*x10+x8*m10*m5*m8*x5*x10+x8*m10*m6*m8*x6*x10+x8*m10*m7*m8*x7*x10+m2*m3*m4*x2*x3*x4+m7*x7+m6*x6+m5*x5+m4*x4+m10*m2*m3*m4*m5*m6*m7*x2*x3*x4*x5*x6*x7*x10+x8*m10*m2*m3*m5*m6*m7*m8*x2*x3*x5*x6*x7*x10+x8*m10*m2*m4*m5*m6*m7*m8*x2*x4*x5*x6*x7*x10+x8*m10*m3*m4*m5*m6*m7*m8*x3*x4*x5*x6*x7*x10+x8*m10*m2*m3*m4*m5*m6*m8*x2*x3*x4*x5*x6*x10+x8*m10*m2*m3*m4*m5*m7*m8*x2*x3*x4*x5*x7*x10+x8*m10*m2*m3*m4*m6*m7*m8*x2*x3*x4*x6*x7*x10+x6*m4*m6*m8*x4*x8+m2*m5*m8*x2*x5*x8+m3*m5*m8*x3*x5*x8+m2*m4*m8*x2*x4*x8+m3*m4*m8*x3*x4*x8+m4*m5*m8*x4*x5*x8+m2*m3*m8*x2*x3*x8+x7*m2*x2*m8*m7*x8+x7*m3*m8*x3*m7*x8+x7*m5*m8*x5*m7*x8+x7*m4*m8*x4*m7*x8+x7*x6*m6*m8*m7*x8+x6*m2*m6*m8*x2*x8+x6*m3*m6*m8*x3*x8+x6*m5*m6*m8*x5*x8+x6*m3*m6*m7*x3*x7+x6*m5*m6*m7*x5*x7+x6*m4*m6*m7*x4*x7+m2*m5*m7*x2*x5*x7+m3*m5*m7*x3*x5*x7+m2*m4*m7*x2*x4*x7+m3*m4*m7*x3*x4*x7+m4*m5*m7*x4*x5*x7+x6*m2*m6*m7*x2*x7+m2*m3*m7*x2*x3*x7+m2*m5*m6*x2*x5*x6+m3*m5*m6*x3*x5*x6+x4*m2*m4*m6*x2*x6+x4*m3*m4*m6*x3*x6+x4*m4*m5*m6*x5*x6+m2*m3*m6*x2*x3*x6+m2*m4*m5*x2*x4*x5+m3*m4*m5*x3*x4*x5+m2*m3*m5*x2*x3*x5+m3*x3)/m_denom; #m_elseif n == 10; prm s##n = -(m2*m3*m4*m5*m6*m7*m8*x2*x3*x4*x5*x6*x7*x8+m2*m3*m4*m5*m6*m7*x2*x3*x4*x5*x6*x7+m2*m3*m4*m5*m6*m8*x2*x3*x4*x5*x6*x8+m2*m3*m4*m5*m7*m8*x2*x3*x4*x5*x7*x8+m2*m3*m4*m6*m7*m8*x2*x3*x4*x6*x7*x8+m2*m3*m5*m6*m7*m8*x2*x3*x5*x6*x7*x8+m2*m4*m5*m6*m7*m8*x2*x4*x5*x6*x7*x8+m3*m4*m5*m6*m7*m8*x3*x4*x5*x6*x7*x8+m2*m3*m4*m5*m6*x2*x3*x4*x5*x6+m2*m3*m4*m5*m7*x2*x3*x4*x5*x7+m2*m3*m4*m5*m8*x2*x3*x4*x5*x8+m2*m3*m4*m6*m7*x2*x3*x4*x6*x7+m2*m3*m4*m6*m8*x2*x3*x4*x6*x8+m2*m3*m4*m7*m8*x2*x3*x4*x7*x8+m2*m3*m5*m6*m7*x2*x3*x5*x6*x7+m2*m3*m5*m6*m8*x2*x3*x5*x6*x8+m2*m3*m5*m7*m8*x2*x3*x5*x7*x8+m2*m3*m6*m7*m8*x2*x3*x6*x7*x8+m2*m4*m5*m6*m7*x2*x4*x5*x6*x7+m2*m4*m5*m6*m8*x2*x4*x5*x6*x8+m2*m4*m5*m7*m8*x2*x4*x5*x7*x8+m2*m4*m6*m7*m8*x2*x4*x6*x7*x8+m2*m5*m6*m7*m8*x2*x5*x6*x7*x8+m3*m4*m5*m6*m7*x3*x4*x5*x6*x7+m3*m4*m5*m6*m8*x3*x4*x5*x6*x8+m3*m4*m5*m7*m8*x3*x4*x5*x7*x8+m3*m4*m6*m7*m8*x3*x4*x6*x7*x8+m3*m5*m6*m7*m8*x3*x5*x6*x7*x8+m4*m5*m6*m7*m8*x4*x5*x6*x7*x8+m2*m3*m4*m5*x2*x3*x4*x5+m2*m3*m4*m6*x2*x3*x4*x6+m2*m3*m4*m7*x2*x3*x4*x7+m2*m3*m4*m8*x2*x3*x4*x8+m2*m3*m5*m6*x2*x3*x5*x6+m2*m3*m5*m7*x2*x3*x5*x7+m2*m3*m5*m8*x2*x3*x5*x8+m2*m3*m6*m7*x2*x3*x6*x7+m2*m3*m6*m8*x2*x3*x6*x8+m2*m3*m7*m8*x2*x3*x7*x8+m2*m4*m5*m6*x2*x4*x5*x6+m2*m4*m5*m7*x2*x4*x5*x7+m2*m4*m5*m8*x2*x4*x5*x8+m2*m4*m6*m7*x2*x4*x6*x7+m2*m4*m6*m8*x2*x4*x6*x8+m2*m4*m7*m8*x2*x4*x7*x8+m2*m5*m6*m7*x2*x5*x6*x7+m2*m5*m6*m8*x2*x5*x6*x8+m2*m5*m7*m8*x2*x5*x7*x8+m2*m6*m7*m8*x2*x6*x7*x8+m3*m4*m5*m6*x3*x4*x5*x6+m3*m4*m5*m7*x3*x4*x5*x7+m3*m4*m5*m8*x3*x4*x5*x8+m3*m4*m6*m7*x3*x4*x6*x7+m3*m4*m6*m8*x3*x4*x6*x8+m3*m4*m7*m8*x3*x4*x7*x8+m3*m5*m6*m7*x3*x5*x6*x7+m3*m5*m6*m8*x3*x5*x6*x8+m3*m5*m7*m8*x3*x5*x7*x8+m3*m6*m7*m8*x3*x6*x7*x8+m4*m5*m6*m7*x4*x5*x6*x7+m4*m5*m6*m8*x4*x5*x6*x8+m4*m5*m7*m8*x4*x5*x7*x8+m4*m6*m7*m8*x4*x6*x7*x8+m5*m6*m7*m8*x5*x6*x7*x8+m2*m3*m4*x2*x3*x4+m2*m3*m5*x2*x3*x5+m2*m3*m6*x2*x3*x6+m2*m3*m7*x2*x3*x7+m2*m3*m8*x2*x3*x8+m2*m4*m5*x2*x4*x5+m2*m4*m6*x2*x4*x6+m2*m4*m7*x2*x4*x7+m2*m4*m8*x2*x4*x8+m2*m5*m6*x2*x5*x6+m2*m5*m7*x2*x5*x7+m2*m5*m8*x2*x5*x8+m2*m6*m7*x2*x6*x7+m2*m6*m8*x2*x6*x8+m2*m7*m8*x2*x7*x8+m3*m4*m5*x3*x4*x5+m3*m4*m6*x3*x4*x6+m3*m4*m7*x3*x4*x7+m3*m4*m8*x3*x4*x8+m3*m5*m6*x3*x5*x6+m3*m5*m7*x3*x5*x7+m3*m5*m8*x3*x5*x8+m3*m6*m7*x3*x6*x7+m3*m6*m8*x3*x6*x8+m3*m7*m8*x3*x7*x8+m4*m5*m6*x4*x5*x6+m4*m5*m7*x4*x5*x7+m4*m5*m8*x4*x5*x8+m4*m6*m7*x4*x6*x7+m4*m6*m8*x4*x6*x8+m4*m7*m8*x4*x7*x8+m5*m6*m7*x5*x6*x7+m5*m6*m8*x5*x6*x8+m5*m7*m8*x5*x7*x8+m6*m7*m8*x6*x7*x8+m2*m3*x2*x3+m2*m4*x2*x4+m2*m5*x2*x5+m2*m6*x2*x6+m2*m7*x2*x7+m2*m8*x2*x8+m3*m4*x3*x4+m3*m5*x3*x5+m3*m6*x3*x6+m3*m7*x3*x7+m3*m8*x3*x8+m4*m5*x4*x5+m4*m6*x4*x6+m4*m7*x4*x7+m4*m8*x4*x8+m5*m6*x5*x6+m5*m7*x5*x7+m5*m8*x5*x8+m6*m7*x6*x7+m6*m8*x6*x8+m7*m8*x7*x8+m2*x2+m3*x3+m4*x4+m5*x5+m6*x6+m7*x7+m8*x8+1)*m1*s1*x10*(m9*x9+1)/m_denom; #m_endif #m_endif '}}} scale = s##n; : sc } 'peak shape macros macro & Gau(& int,& posn,& fwhm,& x) { int (2 Sqrt(Ln(2)/Pi)/fwhm) Exp(-4 Ln(2) ((x-posn)/fwhm)^2) } macro & Lor(& int,& posn,& fwhm,& x) { int (1/(2 Pi)) (fwhm / ((fwhm/2)^2 + (x-posn)^2)) } macro & PeaVII(& int,& posn,& fwhm,& m,& x) { int (2 Sqrt((2^(1/m)-1)/(fwhm^2)) Gamma_Approx(m)/(Sqrt(Pi) Gamma_Approx(m-1/2))) ((fwhm/2)^(2 m)/((fwhm/2)^2 + (2^(1/m) - 1)*(x-posn)^2)^m) } macro & PV(& int,& posn,& fwhm, & lor, & x) { (1-lor) Gau(int, posn, fwhm,x) + lor Lor(int, posn, fwhm,x) } macro & lognormal(& int, & posn, & fwhm, & x) { int/(Sqrt(2 Pi) LN_sigma(posn,fwhm) x) Exp(-((Ln(x)-LN_mu(posn,fwhm))/(Sqrt(2) LN_sigma(posn,fwhm)))^2) } macro & LN_r(& p, & w) { (w + Sqrt(4 p^2 + w^2)) / (2 p) } macro & LN_mu(& p, & w) { LN_r(p,w)^2/(2 Ln(2)) + Ln(p) } macro & LN_sigma(& p, & w) { LN_r(p,w)/Sqrt(2 Ln(2)) } macro & split_Gaussian(& int,& posn,& hwL,& hwR,& x) { If(x < posn, 2 Gau(int,posn,2 hwL,x) / (1 + hwR/hwL), 2 Gau(int,posn,2 hwR,x) (hwR/hwL) / (1 + hwR/hwL) ) } macro & split_Lorentzian(& int,& posn,& hwL,& hwR,& x) { If(x < posn, 2 Lor(int,posn,2 hwL,x) / (1 + hwR/hwL), 2 Lor(int,posn,2 hwR,x) (hwR/hwL) / (1 + hwR/hwL) ) } macro & split_PV(& int,& posn,& hwL,& hwR, & mixL, & mixR, & x) { If(x < posn, 2 PV(int,posn,2 hwL, mixL, x) / (1 + (PV(int,posn,2 hwL,mixL,posn)/PV(int,posn,2 hwR,mixR,posn))), 2 PV(int,posn,2 hwR, mixR, x) (PV(int,posn,2 hwL,mixL,posn)/PV(int,posn,2 hwR,mixR,posn)) / (1 + (PV(int,posn,2 hwL,mixL,posn)/PV(int,posn,2 hwR,mixR,posn))) ) } macro & split_PeaVII(& int,& posn,& hwL,& hwR, & mL, & mR, & x) { If(x < posn, 2 PeaVII(int,posn,2 hwL, mL, x) / (1 + (PeaVII(int,posn,2 hwL,mL,posn)/PeaVII(int,posn,2 hwR,mR,posn))), 2 PeaVII(int,posn,2 hwR, mR, x) (PeaVII(int,posn,2 hwL,mL,posn)/PeaVII(int,posn,2 hwR,mR,posn)) / (1 + (PeaVII(int,posn,2 hwL,mL,posn)/PeaVII(int,posn,2 hwR,mR,posn))) ) } macro & split_Lognormal(& int,& posn,& hwL,& hwR,& x) { If(x < posn, 2 lognormal(int,posn,2 hwL,x) / (1 + (lognormal(int,posn,2 hwL,posn)/lognormal(int,posn,2 hwR,posn))), 2 lognormal(int,posn,2 hwR,x) (lognormal(int,posn,2 hwL,posn)/lognormal(int,posn,2 hwR,posn)) / (1 + (lognormal(int,posn,2 hwL,posn)/lognormal(int,posn,2 hwR,posn))) ) } macro & pk(& mu, & sigma) { Exp(mu - sigma^2) } 'this lognormal is always peaked at x=0. This is good for convolutions that don't shift the peak position, just change the shape. macro & lgn_pk(& mu, & sigma, & x) { (1/(sigma Sin(Th) Sqrt(2 Pi) (x+pk(mu,sigma)))) Exp((-1/2) ((Ln(x+pk(mu,sigma)) - mu)/(sigma Sin(Th)))^2) } macro lognorm_conv_pk(mu, mu_v, sigma, sigma_v, int_ratio) { #m_argu mu 'position parameter for lgnormal distribution #m_argu sigma ' width parameter If_Prm_Eqn_Rpt(mu, mu_v, min =-10; max =100;) If_Prm_Eqn_Rpt(sigma, sigma_v, min =0.0001; max =180;) user_defined_convolution = lgn_pk(CeV(mu, mu_v),CeV(sigma, sigma_v),X); min =Min(-pk(CeV(mu, mu_v),CeV(sigma, sigma_v))+0.0001,0); max =Exp(CeV(mu, mu_v)-CeV(sigma, sigma_v)^2+CeV(sigma, sigma_v)*Sqrt(-2*Ln(int_ratio))) - pk(CeV(mu, mu_v),CeV(sigma, sigma_v)); } macro PV_peak(posn, int, fwhm, lor) { xo_Is xo posn I int peak_type pv pv_fwhm fwhm pv_lor lor } 'my own chebyshev bkg so I can easily get the coefficients. 'this is the chebyshev of the first type definition: https://en.wikipedia.org/wiki/Chebyshev_polynomials#Definition fn Tn(n, x) { return If(n == 0, 1, If(n == 1, (x), 2 (x) (Tn(n-1,x)) - (Tn(n-2,x)) )); } macro Cheb_bkg(a0v) { Cheb_bkg(a0v, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) } macro Cheb_bkg(a0v, a1v) { Cheb_bkg(a0v, a1v, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) } macro Cheb_bkg(a0v, a1v, a2v) { Cheb_bkg(a0v, a1v, a2v, 0, 0, 0, 0, 0, 0, 0, 0, 0) } macro Cheb_bkg(a0v, a1v, a2v, a3v) { Cheb_bkg(a0v, a1v, a2v, a3v, 0, 0, 0, 0, 0, 0, 0, 0) } macro Cheb_bkg(a0v, a1v, a2v, a3v, a4v) { Cheb_bkg(a0v, a1v, a2v, a3v, a4v, 0, 0, 0, 0, 0, 0, 0) } macro Cheb_bkg(a0v, a1v, a2v, a3v, a4v, a5v) { Cheb_bkg(a0v, a1v, a2v, a3v, a4v, a5v, 0, 0, 0, 0, 0, 0) } macro Cheb_bkg(a0v, a1v, a2v, a3v, a4v, a5v, a6v) { Cheb_bkg(a0v, a1v, a2v, a3v, a4v, a5v, a6v, 0, 0, 0, 0, 0) } macro Cheb_bkg(a0v, a1v, a2v, a3v, a4v, a5v, a6v, a7v) { Cheb_bkg(a0v, a1v, a2v, a3v, a4v, a5v, a6v, a7v, 0, 0, 0, 0) } macro Cheb_bkg(a0v, a1v, a2v, a3v, a4v, a5v, a6v, a7v, a8v) { Cheb_bkg(a0v, a1v, a2v, a3v, a4v, a5v, a6v, a7v, a8v, 0, 0, 0) } macro Cheb_bkg(a0v, a1v, a2v, a3v, a4v, a5v, a6v, a7v, a8v, a9v) { Cheb_bkg(a0v, a1v, a2v, a3v, a4v, a5v, a6v, a7v, a8v, a9v, 0, 0) } macro Cheb_bkg(a0v, a1v, a2v, a3v, a4v, a5v, a6v, a7v, a8v, a9v, a10v) { Cheb_bkg(a0v, a1v, a2v, a3v, a4v, a5v, a6v, a7v, a8v, a9v, a10v, 0) } macro Cheb_bkg(a0v, a1v, a2v, a3v, a4v, a5v, a6v, a7v, a8v, a9v, a10v, a11v) { ' #m_argu a0c ' #m_argu a1c ' #m_argu a2c ' #m_argu a3c ' #m_argu a4c ' #m_argu a5c ' #m_argu a6c ' #m_argu a7c ' #m_argu a8c ' #m_argu a9c ' #m_argu a10c ' #m_argu a11c ' ' If_Prm_Eqn_Rpt(a0c , a0v , ) ' If_Prm_Eqn_Rpt(a1c , a1v , ) ' If_Prm_Eqn_Rpt(a2c , a2v , ) ' If_Prm_Eqn_Rpt(a3c , a3v , ) ' If_Prm_Eqn_Rpt(a4c , a4v , ) ' If_Prm_Eqn_Rpt(a5c , a5v , ) ' If_Prm_Eqn_Rpt(a6c , a6v , ) ' If_Prm_Eqn_Rpt(a7c , a7v , ) ' If_Prm_Eqn_Rpt(a8c , a8v , ) ' If_Prm_Eqn_Rpt(a9c , a9v , ) ' If_Prm_Eqn_Rpt(a10c, a10v, ) ' If_Prm_Eqn_Rpt(a11c, a11v, ) prm #m_unique x = (X-X1) / (X2 - X1); ' fit_obj = (CeV(a0c , a0v )) Tn(0,x) + ' (CeV(a1c , a1v )) Tn(1,x) + ' (CeV(a2c , a2v )) Tn(2,x) + ' (CeV(a3c , a3v )) Tn(3,x) + ' (CeV(a4c , a4v )) Tn(4,x) + ' (CeV(a5c , a5v )) Tn(5,x) + ' (CeV(a6c , a6v )) Tn(6,x) + ' (CeV(a7c , a7v )) Tn(7,x) + ' (CeV(a8c , a8v )) Tn(8,x) + ' (CeV(a9c , a9v )) Tn(9,x) + ' (CeV(a10c, a10v)) Tn(10,x) + ' (CeV(a11c, a11v)) Tn(11,x); 'the recursive nature was a little too much for TOPAS to handle. I made these in Maple fit_obj = (a0v ) (1) + (a1v ) (x) + (a2v ) (2*x^2-1) + (a3v ) (4*x^3-3*x) + (a4v ) (8*x^4-8*x^2+1) + (a5v ) (16*x^5-20*x^3+5*x) + (a6v ) (32*x^6-48*x^4+18*x^2-1) + (a7v ) (64*x^7-112*x^5+56*x^3-7*x) + (a8v ) (128*x^8-256*x^6+160*x^4-32*x^2+1) + (a9v ) (256*x^9-576*x^7+432*x^5-120*x^3+9*x) + (a10v) (512*x^10-1280*x^8+1120*x^6-400*x^4+50*x^2-1) + (a11v) (1024*x^11-2816*x^9+2816*x^7-1232*x^5+220*x^3-11*x); } 'macro Variable_Divergence_Bkg(v) { Variable_Divergence_Bkg(,v) } 'macro Variable_Divergence_Bkg(c, v) ' { ' #m_argu c ' If_Prm_Eqn_Rpt(c, v, min .0001 ) ' fit_obj = CeV(c,v) Sin(X Deg_on_2); ' } ' macro Total_Bkg_at(x) { Total_Bkg_at(x, 0, 0) } macro Total_Bkg_at(x, ooxv) { Total_Bkg_at(x, ooxv, 0) } macro & Total_Bkg_at(& x,& ooxv,& sinxv) { Bkg_at(x) + (ooxv / x) + (sinxv Sin(x Deg_on_2)) } 'alternative GOF value as defined in Henn, J. 2016. "An Alternative to the Goodness of Fit." Acta Crystallographica A 72 (6): 696-703. macro aGoFs(val) { prm !N_par = Get(number_independent_parameters); xdd_sum !N_ref = Yobs-Yobs + 1; 'this is the number of datapoints xdd_sum !delta_sq = (Yobs - Ycalc)^2; xdd_sum !sigma_sq_1 = Yobs; xdd_sum !sigma_sq_2 = SigmaYobs^2; 'if SigmaYobs isn't defined, then this makes sure you use sigma = sqrt(Yobs) prm sigma_sq = If(sigma_sq_2 == 0, sigma_sq_1,sigma_sq_2); chi2 = (N_ref/(N_ref - N_par)) (delta_sq / sigma_sq); : val } ' IMPORTANT!!!!! ' This macro uses the CSIRO reserved name "seqno" for the input through batch files ' macro Out_X_Yobs_Ycalc_Difference_XYZ(filename) { xdd_out filename append load out_record out_fmt out_eqn { "%11.5f\t" = X; "%1.2f\t" = seqno; "%11.1f\t" = Yobs; "%11.1f\t" = Ycalc; "%11.1f\t" = Yobs-Ycalc; "%11.1f\t" = 100*((Yobs-Ycalc) / Yobs); "%11.1f\n" = Abs(Yobs-Ycalc); } } macro Phase_Info(m, v, w, Phase_LAC, Phase_Density, rb, num_area) { cell_mass m prm = Get(cell_volume);: v prm = Get(weight_percent);: w prm = Phase_LAC_Eqn_1_on_cm; : Phase_LAC prm = Phase_Density_Eqn_g_on_cm3; : Phase_Density prm = Get(rbragg); : rb prm = Get(numerical_area); : num_area } 'This is a reporting macro that can handle up to 10 "other" inputs ' It outputs all of the cell and phase params at the termination of refinement ' ' IMPORTANT!!!!! ' This macro uses the CSIRO reserved names "file" and "seqno" for the input through batch files ' ' macro Out_Quant(outFileName){ Out_Quant(outFileName, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1)} macro Out_Quant(outFileName, prm01){ Out_Quant(outFileName, prm01,-1,-1,-1,-1,-1,-1,-1,-1,-1)} macro Out_Quant(outFileName, prm01,prm02){ Out_Quant(outFileName, prm01,prm02,-1,-1,-1,-1,-1,-1,-1,-1)} macro Out_Quant(outFileName, prm01,prm02,prm03){ Out_Quant(outFileName, prm01,prm02,prm03,-1,-1,-1,-1,-1,-1,-1)} macro Out_Quant(outFileName, prm01,prm02,prm03,prm04){ Out_Quant(outFileName, prm01,prm02,prm03,prm04,-1,-1,-1,-1,-1,-1)} macro Out_Quant(outFileName, prm01,prm02,prm03,prm04,prm05){ Out_Quant(outFileName, prm01,prm02,prm03,prm04,prm05,-1,-1,-1,-1,-1)} macro Out_Quant(outFileName, prm01,prm02,prm03,prm04,prm05,prm06){ Out_Quant(outFileName, prm01,prm02,prm03,prm04,prm05,prm06,-1,-1,-1,-1)} macro Out_Quant(outFileName, prm01,prm02,prm03,prm04,prm05,prm06,prm07){ Out_Quant(outFileName, prm01,prm02,prm03,prm04,prm05,prm06,prm07,-1,-1,-1)} macro Out_Quant(outFileName, prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08){ Out_Quant(outFileName, prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08,-1,-1)} macro Out_Quant(outFileName, prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08,prm09){ Out_Quant(outFileName, prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08,prm09,-1)} macro Out_Quant(outFileName, prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08,prm09,prm10) { out outFileName append Out_String("\n") ' \n means do new line Out_String(file) Out_String("\t") Out_String(seqno) Out_String("\t") load out_record out_fmt out_eqn { "%s" = Get(phase_name); } load out_record out_fmt out_fmt_err out_eqn { "\t%10.9f " "\t%10.9f " = prm01; "\t%10.9f " "\t%10.9f " = prm02; "\t%10.9f " "\t%10.9f " = prm03; "\t%10.9f " "\t%10.9f " = prm04; "\t%10.9f " "\t%10.9f " = prm05; "\t%10.9f " "\t%10.9f " = prm06; "\t%10.9f " "\t%10.9f " = prm07; "\t%10.9f " "\t%10.9f " = prm08; "\t%10.9f " "\t%10.9f " = prm09; "\t%10.9f " "\t%10.9f " = prm10; "\t%10.9f " "\t%10.9f " = Get(a); "\t%10.9f " "\t%10.9f " = Get(b); "\t%10.9f " "\t%10.9f " = Get(c); "\t%10.9f " "\t%10.9f " = Get(al); "\t%10.9f " "\t%10.9f " = Get(be); "\t%10.9f " "\t%10.9f " = Get(ga); "\t%10.9f " "\t%10.9f " = Get(cell_mass); "\t%10.9f " "\t%10.9f " = Get(cell_volume); "\t%10.9f " "\t%10.9f " = Get(scale); "\t%10.9f " "\t%10.9f " = Get(weight_percent); '"\t%10.9f " "\t%10.9f " = Get(corrected_weight_percent); '"\t%10.9f " "\t%10.9f " = Get(weight_percent_amorphous); "\t%10.9f " "\t%10.9f " = Get(numerical_area); "\t%10.9f " "\t%10.9f " = Get(r_bragg); "\t%10.9f " "\t%10.9f " = Get(r_wp); "\t%10.9f " "\t%10.9f " = Get(r_exp); "\t%10.9f " "\t%10.9f " = Get(gof); } } macro Sequential_Refinement(numruns, ident) { Sequential_Refinement(numruns, ident, , INP_File, Run_Number) } macro Sequential_Refinement(numruns, ident, output) { Sequential_Refinement(numruns, ident, output, INP_File, Run_Number) } macro Sequential_Refinement(numruns, ident, output, INPFILE, RUNNUMBER) 'This one would almost never be called directly { num_runs numruns 'saves a backup of the original input #if Run_Number == 0; system_before_save_OUT { copy INPFILE##.inp INPFILE##.backup } #endif 'Save each input file with the run number and some other identifier system_before_save_OUT { copy INPFILE##.inp INPFILE##_##RUNNUMBER##_##ident##.inp } 'copy the output of the nth file and use it as the input for the (n+1)th file out_file = Concat(String(INPFILE), ".INP"); 'copies the backup back over the final input file at the end of the run so you can restart from where you started #if Run_Number == numruns-1; system_after_save_OUT { copy INPFILE##.backup INPFILE##.inp } #endif 'output every refined parameter #m_ifarg output "" #m_else 'out_prm_vals_on_convergence output 'this doesn't work for multiple files #m_endif } 'this macro allows the use of arbitrary length output ' use it like: Out_Results(file, Get(phase_name)) { O_R(csG) O_R(Get(a)) } macro Out_Results(outFileName) { Out_Results(outFileName, file, seqno, Get(phase_name)) } macro Out_Results(outFileName, phasename) { Out_Results(outFileName, file, seqno, phasename) } macro Out_Results(outFileName, file, seqno) { Out_Results(outFileName, file, seqno, Get(phase_name)) } macro Out_Results(outFileName, file, seqno, phasename) { out outFileName append Out_String("\n") Out_String(file) Out_String("\t") Out_String(seqno) Out_String("\t") load out_record out_fmt out_eqn { "%s" = phasename; } load out_record out_fmt out_fmt_err out_eqn } macro O_R(& value) { "\t%10.9f" "\t%10.9f" #m_ifarg value #m_code = If(Prm_There(value),value,-1); #m_else ''it must be a numeral, an eqn, or a Get() =value; #m_endif } macro O_R_cellprms(themacroval) { #m_ifarg themacroval "0" "\t%10.9f" "\t%10.9f" = -1.0 ; "\t%10.9f" "\t%10.9f" = -1.0 ; "\t%10.9f" "\t%10.9f" = -1.0 ; "\t%10.9f" "\t%10.9f" = -1.0 ; "\t%10.9f" "\t%10.9f" = -1.0 ; "\t%10.9f" "\t%10.9f" = -1.0 ; "\t%10.9f" "\t%10.9f" = -1.0 ; "\t%10.9f" "\t%10.9f" = -1.0 ; #m_else "\t%10.9f" "\t%10.9f" = Get(a); "\t%10.9f" "\t%10.9f" = Get(b); "\t%10.9f" "\t%10.9f" = Get(c); "\t%10.9f" "\t%10.9f" = Get(al); "\t%10.9f" "\t%10.9f" = Get(be); "\t%10.9f" "\t%10.9f" = Get(ga); "\t%10.9f" "\t%10.9f" = Get(cell_volume); "\t%10.9f" "\t%10.9f" = Get(cell_mass); #m_endif } macro Out_Header(outFileName) { out outFileName append Out_String("@file\t") Out_String("seqno\t") Out_String("phase") } macro O_H(head) { Out_String("\t") Out_String(head) Out_String("\t") Out_String(head##_err) } macro O_H_cellprms { Out_String("\t") Out_String(a) Out_String("\t") Out_String(a##_err) Out_String("\t") Out_String(b) Out_String("\t") Out_String(b##_err) Out_String("\t") Out_String(c) Out_String("\t") Out_String(c##_err) Out_String("\t") Out_String(al) Out_String("\t") Out_String(al##_err) Out_String("\t") Out_String(be) Out_String("\t") Out_String(be##_err) Out_String("\t") Out_String(ga) Out_String("\t") Out_String(ga##_err) Out_String("\t") Out_String(cellVol) Out_String("\t") Out_String(cellVol##_err) Out_String("\t") Out_String(cellMass) Out_String("\t") Out_String(cellMass##_err) } macro Out_Results_QPARR2(outFileName) { Out_Results_QPARR2(outFileName, file, seqno, Get(phase_name)) } macro Out_Results_QPARR2(outFileName, phasename) { Out_Results_QPARR2(outFileName, file, seqno, phasename) } macro Out_Results_QPARR2(outFileName, file, seqno) { Out_Results_QPARR2(outFileName, file, seqno, Get(phase_name)) } macro Out_Results_QPARR2(outFileName, file, seqno, phasename) { out outFileName append Out_String("\n") Out_String(file) Out_String("\t") Out_String(INP_File) Out_String("\t") Out_String(seqno) Out_String("\t") load out_record out_fmt out_eqn { "%s" = phasename; } load out_record out_fmt out_eqn } macro O_R_normErr(& value) { 'the value of the prm "\t%10.9f" #m_ifarg value #m_code = If(Prm_There(value),value,-1); #m_else ''it must be a numeral, an eqn, or a Get() =value; #m_endif 'the error of the prm "\t%10.9f" #m_ifarg value #m_code = If(Prm_There(value),Get_Error(value)/Get(gof),0); #m_else ''it must be a numeral, an eqn, or a Get() =Get_Error(value)/Get(gof); 'an eqn will break the macro #m_endif } macro O_R_noErr(& value) { 'the value of the prm "\t%10.9f" #m_ifarg value #m_code = If(Prm_There(value),value,-1); #m_else ''it must be a numeral, an eqn, or a Get() =value; #m_endif } macro Get_Error(& val) { If(Error(val) == val, 0, Error(val)) } macro Prm_to_file(prm) { out prm##.txt Out(prm) } macro Prm_from_file(prm) { #include prm##.txt } macro randomValue(value, plusminus) { (Rand(value - plusminus, value + plusminus)) } 'Some calculations you may want to do macro LVol_v(csg, csl) { #m_ifarg csg "" IF Prm_There(csl) THEN 1 / IB_from_CS(,csl) ELSE -1 ENDIF #m_else #m_ifarg csl "" IF Prm_There(csg) THEN 1 / IB_from_CS(csg,) ELSE -1 ENDIF #m_else IF And(Prm_There(csg), Prm_There(csl)) THEN 1 / IB_from_CS(csg, csl) ELSE IF Prm_There(csg) THEN 1 / IB_from_CS(csg,) ELSE IF Prm_There(csl) THEN 1 / IB_from_CS(,csl) ELSE -1 ENDIF ENDIF ENDIF #m_endif #m_endif } macro e0_v(strg, strl) { #m_ifarg strg "" IF Prm_There(strl) THEN Voigt_FWHM_GL(0, strl) .25 Pi/360 ELSE -1 ENDIF #m_else #m_ifarg strl "" IF Prm_There(strg) THEN Voigt_FWHM_GL(strg, 0) .25 Pi/360 ELSE -1 ENDIF #m_else IF And(Prm_There(strg), Prm_There(strl)) THEN Voigt_FWHM_GL(strg, strl) .25 Pi/360 ELSE IF Prm_There(strg) THEN Voigt_FWHM_GL(strg, 0) .25 Pi/360 ELSE IF Prm_There(strl) THEN Voigt_FWHM_GL(0, strl) .25 Pi/360 ELSE -1 ENDIF ENDIF ENDIF #m_endif #m_endif } macro Backup_First_INP { Backup_INP_for_Run_0 } macro Backup_INP_for_Run_0 { #if (Run_Number == 0) system_before_save_OUT { copy INP_File##.inp INP_File##before.backup } system_after_save_OUT { copy INP_File##.inp INP_File##after.backup } #endif } macro Out_X_Yobs_Ycalc_and_Difference(file) { xdd_out file load out_record out_fmt out_eqn { " %11.6f " = X; " %11.6f " = Yobs; " %11.6f " = Ycalc; " %11.6f\n" = Yobs-Ycalc; } } 'calculate pseudo-Voigt integral breadth from pv_lor and pv_fwhm parameters 'This comes from the definition of PV = nL + (1-n)G, and that the IB is the width ' of a rectangle with the same height as the peak. macro & Integral_Breadth_PV(& lor, & fwhm) { fwhm / (lor (2/Pi) + (1-lor) 2 Sqrt(Ln(2)/Pi)) } macro & Integral_Breadth_G(& fwhm) { fwhm / (2 Sqrt(Ln(2)/Pi)) } macro & Integral_Breadth_L(& fwhm) { fwhm / (2/Pi) } macro & Integral_Breadth_PVII(& m, & w) { (w Sqrt(Pi) Gamma_Approx(m-0.5)) / (2 Sqrt(2^(1/m) - 1) Gamma_Approx(m)) } macro AverageTemperatureFactor(B, B_v) { #m_argu B 'temperature factor If_Prm_Eqn_Rpt(B, B_v, min -10 max 10) 'I'm letting it go negative as it's a relative thing, and designed for hkl phases scale_pks = Exp (-2 CeV(B, B_v) (Sin(Th)/Lam)^2); } /* Debye-Scherrer correction for a non-concentric capillary placement. This follows the maths of K&A and describes the offset in polar coordinates. The normal "vertical" (or "perpendicular") displacement is when sigma == 90 The normal "horizontal" (or "parallel") displacement is when sigma == 0 */ macro Debye_Scherrer_Specimen_Displacement { DSSD } macro DSSD(u, u_v) { DSSD(u, u_v,,90) } ''standard displacement perpendicular to the beam macro DSSD(u, u_v, s, s_v) { #m_argu u ''offset of the sample from the centre of the gonio #m_argu s ''angle subtended from the "sample" position to the actual centre of the gonio (in deg) If_Prm_Eqn_Rpt(u, u_v, min =-Rs/10; max =Rs/10;) ''max offset of a tenth of a radius If_Prm_Eqn_Rpt(s, s_v, min =-180; max =180;) ''full rotation is provided by a negative u length. '' You need "Rad" at the beginning, as th2_offset takes a value in degrees, and this formula is in radians ''This is the small angle implementation, the full one should have Arcsin() around everything after the Rad th2_offset = Rad (CeV(u, u_v) / Rs) Sin(2 Th - CeV(s, s_v) Deg); } ' This is the macro to use if you just want to output numbers to file... ' ' The label is equivilent to the $phase_name in the quant macro ' ' IMPORTANT!!!!! ' This macro uses the CSIRO reserved names "file" and "seqno" for the input through batch files macro Out_Params(outFileName, label, prm01){ Out_Params(outFileName, label, prm01,-1,-1,-1,-1,-1,-1,-1,-1,-1)} macro Out_Params(outFileName, label, prm01,prm02){ Out_Params(outFileName, label, prm01,prm02,-1,-1,-1,-1,-1,-1,-1,-1)} macro Out_Params(outFileName, label, prm01,prm02,prm03){ Out_Params(outFileName, label, prm01,prm02,prm03,-1,-1,-1,-1,-1,-1,-1)} macro Out_Params(outFileName, label, prm01,prm02,prm03,prm04){ Out_Params(outFileName, label, prm01,prm02,prm03,prm04,-1,-1,-1,-1,-1,-1)} macro Out_Params(outFileName, label, prm01,prm02,prm03,prm04,prm05){ Out_Params(outFileName, label, prm01,prm02,prm03,prm04,prm05,-1,-1,-1,-1,-1)} macro Out_Params(outFileName, label, prm01,prm02,prm03,prm04,prm05,prm06){ Out_Params(outFileName, label, prm01,prm02,prm03,prm04,prm05,prm06,-1,-1,-1,-1)} macro Out_Params(outFileName, label, prm01,prm02,prm03,prm04,prm05,prm06,prm07){ Out_Params(outFileName, label, prm01,prm02,prm03,prm04,prm05,prm06,prm07,-1,-1,-1)} macro Out_Params(outFileName, label, prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08){ Out_Params(outFileName, label, prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08,-1,-1)} macro Out_Params(outFileName, label, prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08,prm09){ Out_Params(outFileName, label, prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08,prm09,-1)} macro Out_Params(outFileName, label, prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08,prm09,prm10) { out outFileName append Out_String("\n") Out_String(file) Out_String("\t") Out_String(seqno) Out_String("\t") Out_String(label) Out_String("\t") load out_record out_fmt out_fmt_err out_eqn { "\t%10.9f " "\t%10.9f " = prm01; "\t%10.9f " "\t%10.9f " = prm02; "\t%10.9f " "\t%10.9f " = prm03; "\t%10.9f " "\t%10.9f " = prm04; "\t%10.9f " "\t%10.9f " = prm05; "\t%10.9f " "\t%10.9f " = prm06; "\t%10.9f " "\t%10.9f " = prm07; "\t%10.9f " "\t%10.9f " = prm08; "\t%10.9f " "\t%10.9f " = prm09; "\t%10.9f " "\t%10.9f " = prm10; "\t%10.9f " "\t%10.9f " = -1; "\t%10.9f " "\t%10.9f " = -1; "\t%10.9f " "\t%10.9f " = -1; "\t%10.9f " "\t%10.9f " = -1; "\t%10.9f " "\t%10.9f " = -1; "\t%10.9f " "\t%10.9f " = -1; "\t%10.9f " "\t%10.9f " = -1; "\t%10.9f " "\t%10.9f " = -1; "\t%10.9f " "\t%10.9f " = -1; "\t%10.9f " "\t%10.9f " = -1; '"\t%10.9f " "\t%10.9f " = -1; '"\t%10.9f " "\t%10.9f " = -1; "\t%10.9f " "\t%10.9f " = -1; "\t%10.9f " "\t%10.9f " = -1; "\t%10.9f " "\t%10.9f " = -1; "\t%10.9f " "\t%10.9f " = -1; "\t%10.9f " "\t%10.9f " = -1; } } '------------------------------------------ ' This is the macro to use for the calculation of chemistry ' It writes the site multiplicity and occupancy to file ' ' IMPORTANT!!!!! ' This macro uses the CSIRO reserved names "file" and "seqno" for the input through batch files macro Out_Chemistry(outFileName) { atom_out outFileName append load out_record out_fmt out_eqn { "\n%V" = seqno; 'This should be "file"; it's a workaround for tc ver3 "\t%V" = seqno; "\t%s" = Get(phase_name); "\t%10.9f " = Get(cell_mass); "\t%10.9f " = Get(cell_volume); "\t%10.9f " = Get(weight_percent); "\t%10.9f " = Get(corrected_weight_percent); "\t%s" = Get_From_String(Get(current_atom), site); "\t%s" = Get_From_String(Get(current_atom), atom); "\t%3.0f" = Get_From_String(Get(current_atom), num_posns); '"\t%V" = Get_From_String(Get(current_atom), x); '"\t%V" = Get_From_String(Get(current_atom), y); '"\t%V" = Get_From_String(Get(current_atom), z); "\t%V" = Get_From_String(Get(current_atom), occ); '"\t%V" = Get_From_String(Get(current_atom), beq); } } macro Out_CIF_STR_row(file, FU, temp, formulaUnit, cellSetting) { out file Out_String("\ndata_") Out(Get(phase_name), "\n_chemical_name_mineral ?%s?") Out(Get(a), "\n_cell_length_a %V") Out(Get(b), "\n_cell_length_b %V") Out(Get(c), "\n_cell_length_c %V") Out(Get(al), "\n_cell_angle_alpha %V") Out(Get(be), "\n_cell_angle_beta %V") Out(Get(ga), "\n_cell_angle_gamma %V") Out(Get(cell_volume), "\n_cell_volume %V") Out(FU, "\n_cell_formula_units_Z %V") Out(X1, "\n_cell_measurement_theta_min %V") Out(X2, "\n_cell_measurement_theta_max %V") Out(temp, "\n_cell_measurement_temperature %V") Out(Get(sp_grp_char), "\n_symmetry_space_group_name_H-M %s") Out(cellSetting, "\n_symmetry_cell_setting %s") Out(temp, "\n_diffrn_ambient_temperature %V") Out(Lam, "\n_diffrn_radiation_wavelength %V") Out(formulaUnit, "\n_chemical_formula_sum ?%s?") Out(Get(cell_mass) / FU, "\n_chemical_formula_weight %V") Out(1.6605402 Get(cell_mass) / Get(cell_volume), "\n_exptl_crystal_density_diffrn %V") Out(Get(r_wp), "\n_refine_ls_wR_factor_ %V") Out(Get(gof), "\n_refine_ls_goodness_of_fit_all %V") Out_String("\nloop_") Out_String("\n\t_symmetry_equiv_pos_as_xyz") Out(Get(sp_xyzs_txt), "%s") Out_String("\nloop_") Out_String("\n_atom_site_label") Out_String("\n_atom_site_type_symbol") Out_String("\n_atom_site_symmetry_multiplicity") Out_String("\n_atom_site_fract_x") Out_String("\n_atom_site_fract_y") Out_String("\n_atom_site_fract_z") Out_String("\n_atom_site_occupancy") Out_String("\n_atom_site_B_iso_or_equiv") atom_out file append load out_record out_fmt out_eqn { "\n%s" = Get_From_String(Get(current_atom), site); " %s" = Get_From_String(Get(current_atom), atom); " %3.0f" = Get_From_String(Get(current_atom), num_posns); " %V" = Get_From_String(Get(current_atom), x); " %V" = Get_From_String(Get(current_atom), y); " %V" = Get_From_String(Get(current_atom), z); " %V" = Get_From_String(Get(current_atom), occ); " %V" = Get_From_String(Get(current_atom), beq); } } /* macro report_PV(filename, label, posn_cv, lor_cv, fwhm_cv, int_cv) { BG_fit_PV_Peaks(posn_cv, lor_cv, fwhm_cv, int_cv) Out_Params(filename, label, posn_cv, lor_cv, fwhm_cv, int_cv) } macro report_SPV(filename, label, posn_cv, lorL_cv, lorR_cv, hwL_cv, hwR_cv, int_cv) { BG_fit_SPV_Peaks(posn_cv, lorL_cv, lorR_cv, hwL_cv, hwR_cv, int_cv) Out_Params(filename, label, posn_cv, lorL_cv, lorR_cv, hwL_cv, hwR_cv, int_cv) } */ /* Equations for correction of intensity and sample displacement for flat plate samples in fixed incident beam geometry e.g. when using the Inel CPS120 position sensitive detector alpha = angle between incident beam and sample surface sd = specimen displacement in mm example usage: Inel_flat_plate(12) - applies a correction for 12deg Inel_flat_plate(alp, 12) - refines a correction starting at 12deg Inel_flat_plate(alp, 12, sd, 0.1) - refines both incident angle and displacement see: Rowles, M. R. & Madsen, I. C. 2010, 'Whole-Pattern Profile Fitting of Powder Diffraction Data Collected in Parallel-Beam Flat-Plate Asymmetric Reflection Geometry', Journal of Applied Crystallography, vol. 43, no. 3, pp. 632-634. */ macro Fixed_Incident_Beam_Thick_Sample_Correction { FIBTSC } macro FIBTSC(alpha_v) { FIBTSC(, alpha_v,,0) } macro FIBTSC(alpha_v, sd_v) { FIBTSC(, alpha_v,, sd_v) } macro FIBTSC(alpha_v, sd, sd_v) { FIBTSC(, alpha_v, sd, sd_v) } macro FIBTSC(alpha, alpha_v, sd, sd_v) { Fixed_Incident_Beam_Thick_Sample_Intensity_Correction(alpha, alpha_v) Fixed_Incident_Beam_Peak_Specimen_Displacement(alpha, alpha_v, sd, sd_v) } 'changes from BB geometry intensity assumption to fixed incident beam macro Fixed_Incident_Beam_Thick_Sample_Intensity_Correction (alpha, alpha_v) { 'Toraya, H., Huang, T. C. & Wu, Y. (1993). J. Appl. Cryst. 26, 774-777. #m_argu alpha ''angle of the incident beam to the flat plate in degrees If_Prm_Eqn_Rpt(alpha, alpha_v, min 0.0001 max 90) scale_pks = IF (2 Th) < CeV(alpha, alpha_v) Deg THEN 0 ELSE 2 / (1 + (Sin(CeV(alpha, alpha_v) Deg) / Sin(2 Th - CeV(alpha, alpha_v) Deg))) ENDIF; } 'Rowles, M. R., and C. E. Buckley. 2017. "Aberration Corrections for Non-Bragg-Brentano Diffraction Geometries." Journal of Applied Crystallography 50 (1): 240-251. macro Asymmetric_Reflection_Thin_Specimen_Intensity_Correction(omega, omega_v, mu, mu_v, t, t_v) { #m_argu omega ''in degrees #m_argu mu ''in cm^-1 #m_argu t ''in mm If_Prm_Eqn_Rpt(omega, omega_v, min 0.0001 max 90) If_Prm_Eqn_Rpt(mu, mu_v, min 3 max 500) If_Prm_Eqn_Rpt(t, t_v, min 0.001 max 5) prm #m_unique beta = (180 - ((2 Th) Rad + CeV(omega, omega_v))); '' in degrees prm #m_unique mu_s = CeV(mu, mu_v) / 10; 'converts cm^-1 --> mm^-1 for dimensional consistency scale_pks = IF (2 Th) < CeV(omega, omega_v) Deg THEN 0 ELSE (2 / (1 + (Sin(CeV(omega, omega_v) Deg) / Sin(beta Deg)))) * (1 - Exp((-mu_s CeV(t, t_v)) (1/Sin(CeV(omega, omega_v) Deg) + 1/Sin(beta Deg)))) ENDIF; } 'Rowles, M. R., and C. E. Buckley. 2017. "Aberration Corrections for Non-Bragg-Brentano Diffraction Geometries." Journal of Applied Crystallography 50 (1): 240-251. macro Symmetric_Reflection_Thin_Specimen_Intensity_Correction(mu, mu_v, t, t_v) { #m_argu mu ''in cm^-1 #m_argu t ''in mm If_Prm_Eqn_Rpt(mu, mu_v, min 3 max 500) If_Prm_Eqn_Rpt(t, t_v, min 0.001 max 5) prm #m_unique mu_s = CeV(mu, mu_v) / 10; 'converts cm^-1 --> mm^-1 for dimensional consistency scale_pks = (1 - Exp((-mu_s CeV(t, t_v)) (1/Sin(Th)))); } 'sample displacement macro Fixed_Incident_Beam_Peak_Specimen_Displacement(alpha, alpha_v, sd, sd_v) { 'Masson, O., Guiebretière, R. & Dauger, A. (1996). J. Appl. Cryst. 29, 540-546. #m_argu alpha ''angle of the flat plate in degrees #m_argu sd ''displacement of the sample in mm (technically, the same dimension as the radius...) If_Prm_Eqn_Rpt(alpha, alpha_v, min 0.0001 max 90) If_Prm_Eqn_Rpt(sd, sd_v, min -2 max 2) th2_offset = IF CeV(sd, sd_v) == 0 THEN 0 ELSE -Rad (CeV(sd, sd_v) Sin(2 Th)) / (Rs Sin(CeV(alpha, alpha_v) Deg)) ENDIF; } 'peak profile correction for parallel incident beam macro Fixed_Incident_Beam_Footprint_Correction_With_Mixing { FIBFCWM } macro FIBFCWM(alpha_v, beam_v, mix_v) { FIBFCWM(, alpha_v,, beam_v,,mix_v) } macro FIBFCWM(alpha, alpha_v, beam, beam_v, mix, mix_v) { 'Rowles, M. R. & Madsen, I. C. (2010). J. Appl. Cryst. 43, 632-634 #m_argu alpha ''angle between the incident beam and the flat plate sample (in degrees) #m_argu beam ''height of the beam in the vertical (in mm) #m_argu mix ''the mix param between a purely hat and a purely gaussian beam profile -> 1 is pure hat If_Prm_Eqn_Rpt(alpha, alpha_v, min 0.0001 max 90) If_Prm_Eqn_Rpt(beam, beam_v, min 0.0001 max 10) If_Prm_Eqn_Rpt(mix, mix_v, min 0 max 1) local width_ = (Sin(2 Th - CeV(alpha, alpha_v) Deg) Rad / Rs) (CeV(beam, beam_v) / Sin(CeV(alpha, alpha_v) Deg)); ''^the width of the footprint as seen from 2Th ^the actual footprint on the sample hat = CeV(mix, mix_v) width_; gauss_fwhm = (1-CeV(mix, mix_v)) width_; } 'absorption correction for fixed incident beam. A typo in the original paper has been corrected. macro Fixed_Incident_Beam_Thick_Sample_Absorption { FIBTSA } macro FIBTSA(alpha_v, mu_v) { FIBTSA(,alpha_v,,mu_v) } macro FIBTSA(alpha, alpha_v, mu, mu_v) { 'Masson, O., Guiebretière, R. & Dauger, A. (1996). J. Appl. Cryst. 29, 540-546. #m_argu mu ''in cm^-1 #m_argu alpha ''in degrees If_Prm_Eqn_Rpt(mu, mu_v, min 3 max 500) If_Prm_Eqn_Rpt(alpha, alpha_v, min 0.0001 max 90) exp_conv_const = Ln(0.001) (1/((CeV(mu,mu_v) Rs / 10) ((1/Tan(2 Th - CeV(alpha,alpha_v) Deg)) + Tan(Th)))) Rad; ''^ the Ln(0.001) is because of the definition of the exp func in topas -- see the manual. ''^ the /10 is in there because Rs is in mm and mu is in cm^-1 } macro FIBTSA_test(alpha, alpha_v, mu, mu_v) { 'Masson, O., Guiebretière, R. & Dauger, A. (1996). J. Appl. Cryst. 29, 540-546. #m_argu mu ''in cm^-1 #m_argu alpha ''in degrees If_Prm_Eqn_Rpt(mu, mu_v, min 3 max 500) If_Prm_Eqn_Rpt(alpha, alpha_v, min 0.0001 max 90) exp_conv_const = Ln(0.001) (1/((CeV(mu,mu_v) Rs / 10) ((1/Tan(2 Th - CeV(alpha,alpha_v) Deg)) + Tan(Th)))) Rad; ''^ the Ln(0.001) is because of the definition of the exp func in topas -- see the manual. ''^ the /10 is in there because Rs is in mm and mu is in cm^-1 } ''Line profile correction due to absorption in asymmetric reflection for a thin specimen - equation 14, 16, & 17 macro Asymmetric_Reflection_Thin_Specimen_Absorption_Correction(omega, omega_v, mu, mu_v, t, t_v) { #m_argu omega ''in degrees #m_argu mu ''in cm^-1 #m_argu t ''in mm If_Prm_Eqn_Rpt(omega, omega_v, min 0.0001 max 90) If_Prm_Eqn_Rpt(mu, mu_v, min 3 max 500) If_Prm_Eqn_Rpt(t, t_v, min 0.001 max 5) prm #m_unique beta = (180 - ((2 Th) Rad + CeV(omega, omega_v))); '' in degrees prm #m_unique mu_s = CeV(mu, mu_v) / 10; 'converts cm^-1 --> mm^-1 for dimensional consistency exp_conv_const = Ln(0.001) (1/(((mu_s Rs) / Sin(2 Th)) (1 + (Sin(CeV(omega,omega_v) Deg)/ Sin(beta Deg))))) Rad ; exp_limit = (-CeV(t, t_v)/Rs) (Sin(2 Th) / Sin(CeV(omega,omega_v) Deg)) Rad; } ''Line profile correction due to absorption in symmetric reflection for a thin specimen - equation 14, 16, & 17 macro Symmetric_Reflection_Thin_Specimen_Absorption_Correction(mu, mu_v, t, t_v) { #m_argu mu ''in cm^-1 #m_argu t ''in mm If_Prm_Eqn_Rpt(mu, mu_v, min 3 max 500) If_Prm_Eqn_Rpt(t, t_v, min 0.001 max 5) prm #m_unique mu_s = CeV(mu, mu_v) / 10; 'converts cm^-1 --> mm^-1 for dimensional consistency exp_conv_const = Ln(0.001) (1/(((mu_s Rs) 2 / Sin(2 Th)))) Rad ; exp_limit = (-CeV(t, t_v)/Rs) (2 Cos(Th)) Rad; } 'this macro calculates the footprint of the beam on the sample ' then figures out how big it looks from the detector. 'It then sees if the beam width is bigger or smaller than the detector size. ' if it is smaller, then the intensity is not scaled. ' if it is bigger, then the intensity is scaled as the ratio of the dw/apparant footprint macro Fixed_Incident_Beam_Small_Detector_Window_Correction { FIBSDWC } macro FIBSDWC(omega_v, beam_v, dw_v) { FIBSDWC(, omega_v,, beam_v,,dw_v) } macro FIBSDWC(omega_v, beam, beam_v, dw, dw_v) { FIBSDWC(, omega_v, beam, beam_v, dw, dw_v) } macro FIBSDWC(omega, omega_v, beam, beam_v, dw, dw_v) { #m_argu omega ''angle between the incident beam and the flat plate sample (in degrees) #m_argu beam ''height of the beam in the vertical (in mm) #m_argu dw ''the length of the detector window in the equitorial plane - eg your receiving slit is 0.975 mm If_Prm_Eqn_Rpt(omega, omega_v, min 0.0001 max 90) If_Prm_Eqn_Rpt(beam, beam_v, min 0.0001 max 3) If_Prm_Eqn_Rpt(dw, dw_v, min 0.01 max 10) scale_pks =Min(1,CeV(dw, dw_v)/(CeV(beam, beam_v) Sin(2 Th - CeV(omega, omega_v) Deg)/ Sin(CeV(omega, omega_v) Deg))); } ' March-Dollase Preferred orientation correction for asymmetric reflection, capillary transmission, or symmetric reflection 'Ida, Takeshi. 2013. Effect of Preferred Orientation in Synchrotron X-Ray Powder Diffraction. Annual Report of the Advanced Ceramics Research Center: Nagoya Institute of Technology. http://www.crl.nitech.ac.jp/ar/2013/0711_acrc_ar2013_review.pdf. 'angles in radians macro & cosrho(& alpha, & Delta, & phi) { Cos(alpha)*Cos(Delta) - Sin(alpha)*Sin(Delta)*Sin(phi) } macro & PO_P(& r, & alpha, & Delta, & phi) { (r^2 * cosrho(alpha,Delta,phi)^2 + (1-cosrho(alpha,Delta,phi)^2)/r)^(-3/2) } 'this is equation 10 in Takashi's paper macro & PO_f(& r, & alpha, & Delta) { 'I've hard coded this for N==32, as the sum thing doesn't work. '(1/N)*Sum( PO_P(r,alpha,Delta,(j+(1/2))*Pi/N) ,j=0,j<=N-1,j=j+1) (1/64)* (PO_P(r,alpha,Delta,( 0+0.5)*Pi/64) + PO_P(r,alpha,Delta,( 1+0.5)*Pi/64) + PO_P(r,alpha,Delta,( 2+0.5)*Pi/64) + PO_P(r,alpha,Delta,( 3+0.5)*Pi/64) + PO_P(r,alpha,Delta,( 4+0.5)*Pi/64) + PO_P(r,alpha,Delta,( 5+0.5)*Pi/64) + PO_P(r,alpha,Delta,( 6+0.5)*Pi/64) + PO_P(r,alpha,Delta,( 7+0.5)*Pi/64) + PO_P(r,alpha,Delta,( 8+0.5)*Pi/64) + PO_P(r,alpha,Delta,( 9+0.5)*Pi/64) + PO_P(r,alpha,Delta,(10+0.5)*Pi/64) + PO_P(r,alpha,Delta,(11+0.5)*Pi/64) + PO_P(r,alpha,Delta,(12+0.5)*Pi/64) + PO_P(r,alpha,Delta,(13+0.5)*Pi/64) + PO_P(r,alpha,Delta,(14+0.5)*Pi/64) + PO_P(r,alpha,Delta,(15+0.5)*Pi/64) + PO_P(r,alpha,Delta,(16+0.5)*Pi/64) + PO_P(r,alpha,Delta,(17+0.5)*Pi/64) + PO_P(r,alpha,Delta,(18+0.5)*Pi/64) + PO_P(r,alpha,Delta,(19+0.5)*Pi/64) + PO_P(r,alpha,Delta,(20+0.5)*Pi/64) + PO_P(r,alpha,Delta,(21+0.5)*Pi/64) + PO_P(r,alpha,Delta,(22+0.5)*Pi/64) + PO_P(r,alpha,Delta,(23+0.5)*Pi/64) + PO_P(r,alpha,Delta,(24+0.5)*Pi/64) + PO_P(r,alpha,Delta,(25+0.5)*Pi/64) + PO_P(r,alpha,Delta,(26+0.5)*Pi/64) + PO_P(r,alpha,Delta,(27+0.5)*Pi/64) + PO_P(r,alpha,Delta,(28+0.5)*Pi/64) + PO_P(r,alpha,Delta,(29+0.5)*Pi/64) + PO_P(r,alpha,Delta,(30+0.5)*Pi/64) + PO_P(r,alpha,Delta,(31+0.5)*Pi/64) + PO_P(r,alpha,Delta,(32+0.5)*Pi/64) + PO_P(r,alpha,Delta,(33+0.5)*Pi/64) + PO_P(r,alpha,Delta,(34+0.5)*Pi/64) + PO_P(r,alpha,Delta,(35+0.5)*Pi/64) + PO_P(r,alpha,Delta,(36+0.5)*Pi/64) + PO_P(r,alpha,Delta,(37+0.5)*Pi/64) + PO_P(r,alpha,Delta,(38+0.5)*Pi/64) + PO_P(r,alpha,Delta,(39+0.5)*Pi/64) + PO_P(r,alpha,Delta,(40+0.5)*Pi/64) + PO_P(r,alpha,Delta,(41+0.5)*Pi/64) + PO_P(r,alpha,Delta,(42+0.5)*Pi/64) + PO_P(r,alpha,Delta,(43+0.5)*Pi/64) + PO_P(r,alpha,Delta,(44+0.5)*Pi/64) + PO_P(r,alpha,Delta,(45+0.5)*Pi/64) + PO_P(r,alpha,Delta,(46+0.5)*Pi/64) + PO_P(r,alpha,Delta,(47+0.5)*Pi/64) + PO_P(r,alpha,Delta,(48+0.5)*Pi/64) + PO_P(r,alpha,Delta,(49+0.5)*Pi/64) + PO_P(r,alpha,Delta,(50+0.5)*Pi/64) + PO_P(r,alpha,Delta,(51+0.5)*Pi/64) + PO_P(r,alpha,Delta,(52+0.5)*Pi/64) + PO_P(r,alpha,Delta,(53+0.5)*Pi/64) + PO_P(r,alpha,Delta,(54+0.5)*Pi/64) + PO_P(r,alpha,Delta,(55+0.5)*Pi/64) + PO_P(r,alpha,Delta,(56+0.5)*Pi/64) + PO_P(r,alpha,Delta,(57+0.5)*Pi/64) + PO_P(r,alpha,Delta,(58+0.5)*Pi/64) + PO_P(r,alpha,Delta,(59+0.5)*Pi/64) + PO_P(r,alpha,Delta,(60+0.5)*Pi/64) + PO_P(r,alpha,Delta,(61+0.5)*Pi/64) + PO_P(r,alpha,Delta,(62+0.5)*Pi/64) + PO_P(r,alpha,Delta,(63+0.5)*Pi/64)) } 'angles in radians macro generalised_PO_eqn(r_c, r_v, alpha, hkl, Delta_c, Delta_v) { #m_argu r_c #m_argu Delta_c If_Prm_Eqn_Rpt(r_c, r_v, min 0.0001 max = 2 Val + .5;) 'preferred orientation parameter If_Prm_Eqn_Rpt(Delta_c, Delta_v, min 0.0001 max =Pi;) 'angle in radians: ==0 symmetric reflection, ==Pi/2 capillary transmission, ==Abs(Th-Omega) asymmetric reflection #m_ifarg alpha "" #m_unique_not_refine alpha #m_endif str_hkl_angle alpha hkl 'angle in radians between PO direction and current diffraction vector scale_pks = Multiplicities_Sum( PO_f(CeV(r_c,r_v), alpha, CeV(Delta_c,Delta_v)) ); } macro PO_symmetric_reflection(r_c, r_v, hkl) { generalised_PO_eqn(r_c, r_v, , hkl, , 0) } macro PO_capillary_transmission(r_c, r_v, hkl) { generalised_PO_eqn(r_c, r_v, , hkl, , (Pi/2)) } macro PO_asymmetric_reflection(r_c, r_v,omega_v, hkl) { PO_asymmetric_reflection(r_c, r_v,,omega_v, hkl) } macro PO_asymmetric_reflection(r_c, r_v,omega_c,omega_v, hkl) { #m_argu omega_c If_Prm_Eqn_Rpt(omega_c, omega_v, min 0.0001 max 90) 'incident angle in degrees prm #m_unique Delta = Abs(Th - ((CeV(omega_c,omega_v))*Deg)) ; generalised_PO_eqn(r_c, r_v, , hkl, , Delta) } macro PO_asymmetric_reflection_special(r_c, r_v,omega_c,omega_v, hkl,f) { #m_argu omega_c If_Prm_Eqn_Rpt(omega_c, omega_v, min 0.0001 max 90) 'incident angle in degrees prm #m_unique Delta = Abs(Th - ((CeV(omega_c,omega_v))*Deg)) ; generalised_PO_eqn_special(r_c, r_v, , hkl, , Delta,f) } macro generalised_PO_eqn_special(r_c, r_v, alpha, hkl, Delta_c, Delta_v,f) { #m_argu r_c #m_argu Delta_c If_Prm_Eqn_Rpt(r_c, r_v, min 0.0001 max = 2 Val + .5;) 'preferred orientation parameter If_Prm_Eqn_Rpt(Delta_c, Delta_v, min 0.0001 max =Pi;) 'angle in radians: ==0 symmetric reflection, ==Pi/2 capillary transmission, ==Abs(Th-Omega) asymmetric reflection #m_ifarg alpha "" #m_unique_not_refine alpha #m_endif str_hkl_angle alpha hkl 'angle in radians between PO direction and current diffraction vector scale_pks = f Multiplicities_Sum( PO_f(CeV(r_c,r_v), alpha, CeV(Delta_c,Delta_v)) ); } 'from R. W. Cheary, A. A. Coelho and J. P. Cline, J. Res. Natl. Inst. Stand. Technol., 2004, 109, 1-25 ' see equation 13 in section 4.5. You are refining the width of the defocused beam at the receiving slit. ' Assumes that the equatorial divergence is less than 2deg. macro Symmetric_Diffractometer_Defocusing { SDD } macro SDD(v) { SDD(,v) } macro SDD(c, v) { 'assumes symmetric diffraction #m_argu c If_Prm_Eqn_Rpt(c, v, min 0.00001 max 2, del 0.01 ) 'width of defocussed beam at the recieving slit (mm) hat = Rad CeV(c,v) / Rs; } 'from R. W. Cheary, A. A. Coelho and J. P. Cline, J. Res. Natl. Inst. Stand. Technol., 2004, 109, 1-25 ' see equation 13 in section 4.5. You are refining the divergence of the beam and the radius of the focal point ' This allows you to refine a divergence up to 5 deg. Don't know if the model holds up there though... macro Symmetric_Diffractometer_Defocusing_Large_Divergence { SDDLD } macro SDDLD(div_v, rad_v) { SDDLD(,div_v,,rad_v) } macro SDDLD(div, div_v, rad_v) { SDDLD(div ,div_v,,rad_v) } macro SDDLD(div, div_v, rad, rad_v) { #m_argu div 'divergence of the beam in degrees #m_argu rad 'radius of the focal point of the diffracted beam If_Prm_Eqn_Rpt(div, div_v, min 0.0001 max 5) ' max div of 5 deg If_Prm_Eqn_Rpt(rad, sd_v, min 0.0001 max 2 Rs) ' max radius of twice the physical radius hat = CeV(div, div_v) Deg Abs((CeV(div, div_v) - Rs) / Rs); } 'from R. W. Cheary, A. A. Coelho and J. P. Cline, J. Res. Natl. Inst. Stand. Technol., 2004, 109, 1-25 ' see equation 15 in section 4.5. You are refining the divergence of the beam and the offset from the symmetric position ' This allows you to refine a divergence up to 5 deg. Don't know if the model holds up there though... macro Asymmetric_Diffractometer_Defocusing_Large_Divergence { ADDLD } macro ADDLD(div_v, omega_v) { ADDLD(,div_v,,omega_v) } macro ADDLD(div, div_v, omega_v) { ADDLD(div ,div_v,,omega_v) } macro ADDLD(div, div_v, omega, omega_v) { #m_argu div 'divergence of the beam in degrees #m_argu omega 'offset of the beam from the symmetric diffraction condition If_Prm_Eqn_Rpt(div, div_v, min 0.0001 max 5) ' max div of 5 deg If_Prm_Eqn_Rpt(omega, omega_v, min -89.9999 max 89.9999) ' don't know why you'd be out than more than +/- 90... hat = CeV(div, div_v) Deg Abs(1 - (Sin((2 Th) - (CeV(omega, omega_v) Deg)) / Sin(CeV(omega, omega_v) Deg))); } 'from R. W. Cheary, A. A. Coelho and J. P. Cline, J. Res. Natl. Inst. Stand. Technol., 2004, 109, 1-25 ' see section 4.2.2. This doesn't include any corrections for specular relection of x-rays from the slits. ' see ref 11 from the above ref to figure out how to do that. macro Parallel_Plate_Collimator { PPC } macro PPC(v) { PPC(,v) } macro PPC(c, v) { #m_argu c If_Prm_Eqn_Rpt(c, v, min 0.0001 max 3, del = Val .05+.01;) 'acceptance angle in degrees hat = CeV(c,v); hat = CeV(c,v); } 'from R. W. Cheary, A. A. Coelho and J. P. Cline, J. Res. Natl. Inst. Stand. Technol., 2004, 109, 1-25 ' see equations 7 & 8 ' Here, we're refining the divergence of the beam. You only need this if you're going to less than 10deg. macro Divergence_with_Flat_Sample_Correction { DWFPSC } macro DWFPSC(v) { DWFPSC(,v) } macro DWFPSC(c, v) { #m_argu c If_Prm_Eqn_Rpt(c, v, min 0.0001 max 3, del = Val .05+.01;) 'divergence in degrees 'flat sample correction one_on_x_conv = -((((CeV(c,v) Deg_on_2 * Rs) * ((1 / Sin(Th - (CeV(c,v) Deg_on_2))) + (1 / Sin(Th + (CeV(c,v) Deg_on_2))))) / (2 Rs))^2) Sin(2 Th); } 'from R. W. Cheary, A. A. Coelho and J. P. Cline, J. Res. Natl. Inst. Stand. Technol., 2004, 109, 1-25 macro Variable_Divergence_with_Intensity_and_Flat_Sample_Correction(v) { Variable_Divergence_with_Intensity_and_Flat_Sample_Correction(,v) } macro Variable_Divergence_with_Intensity_and_Flat_Sample_Correction(c, v) { #m_argu c If_Prm_Eqn_Rpt(c, v, min 0.0001 max 60, del = Val .05+.02;) 'illuminated length in mm 'flat sample correction one_on_x_conv = -(CeV(c,v) / ( 2 Rs))^2 Sin(2 Th); 'variable divergence correction one_on_x_conv = -CeV(c,v)^2 Sin(2 Th) Rad / (4 Rs^2); 'scale peaks correction scale_pks = Sin(Th); } 'Legendre polynomials of even order for spherical harmonics macro & Legendre_polynomial(n, & x) { #m_if n == 0; 1 #m_elseif n == 2; (-1/2)+(3/2)*x^2 #m_elseif n == 4; (3/8)+(35/8)*x^4-(15/4)*x^2 #m_elseif n == 6; (-5/16)+(231/16)*x^6-(315/16)*x^4+(105/16)*x^2 #m_elseif n == 8; (35/128)+(6435/128)*x^8-(3003/32)*x^6+(3465/64)*x^4-(315/32)*x^2 #m_endif } macro & JP_0 { 1 } macro & JP_1 { 0.5*a - 0.5*b + (1+ 0.5*a + 0.5*b)*x } macro & JP_n { ((2*n+a+b-1)*((2*n+a+b)*(2*n+a+b-2)*x+a^2-b^2)*Jacobi_polynomial(n-1,a,b,x) - 2*(n+a-1)*(n+b-1)*(2*n+a+b)*Jacobi_polynomial(n-2,a,b,x))/(2*n*(n+a+b)*(2*n+a+b-2)) } macro & LP_0 { 1 } macro & LP_1 { x } macro & LP_n { (x*Legendre_polynomial_fn(n-1,x)*(2*n-1) - Legendre_polynomial_fn(n-2,x)*(n-1))/n } fn Legendre_polynomial_fn(n,x) = If(n==0, LP_0, If(n==1, LP_1, LP_n)); macro Out_Quant_surface(outFileName,file,seqno){ Out_Quant_surface(outFileName,file,seqno, -1,-1,-1,-1,-1,-1,-1,-1,-1,-1)} macro Out_Quant_surface(outFileName,file,seqno, prm01){ Out_Quant_surface(outFileName,file,seqno, prm01,-1,-1,-1,-1,-1,-1,-1,-1,-1)} macro Out_Quant_surface(outFileName,file,seqno, prm01,prm02){ Out_Quant_surface(outFileName,file,seqno, prm01,prm02,-1,-1,-1,-1,-1,-1,-1,-1)} macro Out_Quant_surface(outFileName,file,seqno, prm01,prm02,prm03){ Out_Quant_surface(outFileName,file,seqno, prm01,prm02,prm03,-1,-1,-1,-1,-1,-1,-1)} macro Out_Quant_surface(outFileName,file,seqno, prm01,prm02,prm03,prm04){ Out_Quant_surface(outFileName,file,seqno, prm01,prm02,prm03,prm04,-1,-1,-1,-1,-1,-1)} macro Out_Quant_surface(outFileName,file,seqno, prm01,prm02,prm03,prm04,prm05){ Out_Quant_surface(outFileName,file,seqno, prm01,prm02,prm03,prm04,prm05,-1,-1,-1,-1,-1)} macro Out_Quant_surface(outFileName,file,seqno, prm01,prm02,prm03,prm04,prm05,prm06){ Out_Quant_surface(outFileName,file,seqno, prm01,prm02,prm03,prm04,prm05,prm06,-1,-1,-1,-1)} macro Out_Quant_surface(outFileName,file,seqno, prm01,prm02,prm03,prm04,prm05,prm06,prm07){ Out_Quant_surface(outFileName,file,seqno, prm01,prm02,prm03,prm04,prm05,prm06,prm07,-1,-1,-1)} macro Out_Quant_surface(outFileName,file,seqno, prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08){ Out_Quant_surface(outFileName,file,seqno, prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08,-1,-1)} macro Out_Quant_surface(outFileName,file,seqno, prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08,prm09){ Out_Quant_surface(outFileName,file,seqno, prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08,prm09,-1)} macro Out_Quant_surface(outFileName,file,seqno, prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08,prm09,prm10) { out outFileName append Out_String("\n") Out_String(file) Out_String("\t") Out_String(seqno) Out_String("\t") load out_record out_fmt out_eqn { "%s " = Get(phase_name); "\t%10.9f " = prm01; "\t%10.9f " = prm02; "\t%10.9f " = prm03; "\t%10.9f " = prm04; "\t%10.9f " = prm05; "\t%10.9f " = prm06; "\t%10.9f " = prm07; "\t%10.9f " = prm08; "\t%10.9f " = prm09; "\t%10.9f " = prm10; "\t%10.9f " = Get(a); "\t%10.9f " = Get(b); "\t%10.9f " = Get(c); "\t%10.9f " = Get(al); "\t%10.9f " = Get(be); "\t%10.9f " = Get(ga); "\t%10.9f " = Get(cell_volume); "\t%10.9f " = Get(scale); "\t%10.9f " = Get(weight_percent); "\t%10.9f " = Get(corrected_weight_percent); '"\t%10.9f " = Get(weight_percent_amorphous); "\t%10.9f " = Get(rbragg); "\t%10.9f " = Get(r_wp); "\t%10.9f " = Get(gof); } } macro Out_Chemistry_surface(outFileName, seqno) { atom_out outFileName append load out_record out_fmt out_eqn { "\n%V" = seqno; 'This should be "file"; it's a workaround for tc ver3 "\t%V" = seqno; "\t%s" = Get(phase_name); "\t%10.9f " = Get(cell_mass); "\t%10.9f " = Get(cell_volume); "\t%10.9f " = Get(weight_percent); "\t%10.9f " = Get(corrected_weight_percent); "\t%s" = Get_From_String(Get(current_atom), site); "\t%s" = Get_From_String(Get(current_atom), atom); "\t%3.0f" = Get_From_String(Get(current_atom), num_posns); '"\t%V" = Get_From_String(Get(current_atom), x); '"\t%V" = Get_From_String(Get(current_atom), y); '"\t%V" = Get_From_String(Get(current_atom), z); "\t%V" = Get_From_String(Get(current_atom), occ); '"\t%V" = Get_From_String(Get(current_atom), beq); } } macro Out_Params_surface(outFileName,file,seqno, label, prm01){ Out_Params_surface(outFileName,file,seqno, label, prm01,-1,-1,-1,-1,-1,-1,-1,-1,-1)} macro Out_Params_surface(outFileName,file,seqno, label, prm01,prm02){ Out_Params_surface(outFileName,file,seqno, label, prm01,prm02,-1,-1,-1,-1,-1,-1,-1,-1)} macro Out_Params_surface(outFileName,file,seqno, label, prm01,prm02,prm03){ Out_Params_surface(outFileName,file,seqno, label, prm01,prm02,prm03,-1,-1,-1,-1,-1,-1,-1)} macro Out_Params_surface(outFileName,file,seqno, label, prm01,prm02,prm03,prm04){ Out_Params_surface(outFileName,file,seqno, label, prm01,prm02,prm03,prm04,-1,-1,-1,-1,-1,-1)} macro Out_Params_surface(outFileName,file,seqno, label, prm01,prm02,prm03,prm04,prm05){ Out_Params_surface(outFileName,file,seqno, label, prm01,prm02,prm03,prm04,prm05,-1,-1,-1,-1,-1)} macro Out_Params_surface(outFileName,file,seqno, label, prm01,prm02,prm03,prm04,prm05,prm06){ Out_Params_surface(outFileName,file,seqno, label, prm01,prm02,prm03,prm04,prm05,prm06,-1,-1,-1,-1)} macro Out_Params_surface(outFileName,file,seqno, label, prm01,prm02,prm03,prm04,prm05,prm06,prm07){ Out_Params_surface(outFileName,file,seqno, label, prm01,prm02,prm03,prm04,prm05,prm06,prm07,-1,-1,-1)} macro Out_Params_surface(outFileName,file,seqno, label, prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08){ Out_Params_surface(outFileName,file,seqno, label, prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08,-1,-1)} macro Out_Params_surface(outFileName,file,seqno, label, prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08,prm09){ Out_Params_surface(outFileName,file,seqno, label, prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08,prm09,-1)} macro Out_Params_surface(outFileName,file,seqno, label, prm01,prm02,prm03,prm04,prm05,prm06,prm07,prm08,prm09,prm10) { out outFileName append Out_String("\n") Out_String(file) Out_String("\t") Out_String(seqno) Out_String("\t") Out_String(label) Out_String("\t") load out_record out_fmt out_eqn { "%10.15f " = prm01; "\t%10.15f " = prm02; "\t%10.15f " = prm03; "\t%10.15f " = prm04; "\t%10.15f " = prm05; "\t%10.15f " = prm06; "\t%10.15f " = prm07; "\t%10.15f " = prm08; "\t%10.15f " = prm09; "\t%10.15f " = prm10; 'these are space fillers matched to the out_quant macro "\t%10.1f " = -1; "\t%10.1f " = -1; "\t%10.1f " = -1; "\t%10.1f " = -1; "\t%10.1f " = -1; "\t%10.1f " = -1; "\t%10.1f " = -1; "\t%10.1f " = -1; "\t%10.1f " = -1; "\t%10.1f " = -1; '"\t%10.1f " = -1; "\t%10.1f " = -1; "\t%10.1f " = -1; "\t%10.1f " = -1; } } '------------------------------------------ macro Out_rwp_surface(outFileName) { out outFileName append Out_String("\n") Out_String("surface") Out_String("\t") Out_String("allseqno") Out_String("\t") Out_String("rwp") Out_String("\t") load out_record out_fmt out_eqn { "%10.15f " = -1; "\t%10.15f " = -1; "\t%10.15f " = -1; "\t%10.15f " = -1; "\t%10.15f " = -1; "\t%10.15f " = -1; "\t%10.15f " = -1; "\t%10.15f " = -1; "\t%10.15f " = -1; "\t%10.15f " = -1; 'these are space fillers matched to the out_quant macro "\t%10.1f " = -1; "\t%10.1f " = -1; "\t%10.1f " = -1; "\t%10.1f " = -1; "\t%10.1f " = -1; "\t%10.1f " = -1; "\t%10.1f " = -1; "\t%10.1f " = -1; "\t%10.1f " = -1; "\t%10.1f " = -1; '"\t%10.1f " = -1; "\t%10.1f " = -1; "\t%10.1f " = Get(r_wp); "\t%10.1f " = Get(gof); } } '------------------------------------------ macro Rowles_Stephens_lor_gauss(etac, etav, mhkl, conv) { #m_argu etac If_Prm_Eqn_Rpt(etac, etav, min 0 max 1) local #m_unique pp_ = D_spacing^2 * Sqrt(Max(mhkl,0)) (conv) 0.0018/3.1415927; gauss_fwhm = pp_ (1-CeV(etac, etav)); lor_fwhm = pp_ CeV(etac, etav); } macro Rowles_Stephens_triclinic ( etac, etav, s400c,s400v, s040c,s040v, s004c,s004v, s220c,s220v, s202c,s202v, s022c,s022v, s310c,s310v, s103c,s103v, s031c,s031v, s130c,s130v, s301c,s301v, s013c,s013v, s211c,s211v, s121c,s121v, s112c,s112v, conv ) { #m_argu s400c If_Prm_Eqn_Rpt(s400c,s400v,) #m_argu s040c If_Prm_Eqn_Rpt(s040c,s040v,) #m_argu s004c If_Prm_Eqn_Rpt(s004c,s004v,) #m_argu s220c If_Prm_Eqn_Rpt(s220c,s220v,) #m_argu s202c If_Prm_Eqn_Rpt(s202c,s202v,) #m_argu s022c If_Prm_Eqn_Rpt(s022c,s022v,) #m_argu s310c If_Prm_Eqn_Rpt(s310c,s310v,) #m_argu s103c If_Prm_Eqn_Rpt(s103c,s103v,) #m_argu s031c If_Prm_Eqn_Rpt(s031c,s031v,) #m_argu s130c If_Prm_Eqn_Rpt(s130c,s130v,) #m_argu s301c If_Prm_Eqn_Rpt(s301c,s301v,) #m_argu s013c If_Prm_Eqn_Rpt(s013c,s013v,) #m_argu s211c If_Prm_Eqn_Rpt(s211c,s211v,) #m_argu s121c If_Prm_Eqn_Rpt(s121c,s121v,) #m_argu s112c If_Prm_Eqn_Rpt(s112c,s112v,) Rowles_Stephens_lor_gauss( etac, etav, CeV(s400c,s400v) H^4 + CeV(s040c,s040v) K^4 + CeV(s004c,s004v) L^4 + CeV(s220c,s220v) H^2 K^2 + CeV(s202c,s202v) H^2 L^2 + CeV(s022c,s022v) K^2 L^2 + CeV(s310c,s310v) H^3 K + CeV(s103c,s103v) H L^3 + CeV(s031c,s031v) K^3 L + CeV(s130c,s130v) H K^3 + CeV(s301c,s301v) H^3 L + CeV(s013c,s013v) K L^3 + CeV(s211c,s211v) H^2 K L + CeV(s121c,s121v) H K^2 L + CeV(s112c,s112v) H K L^2, conv ) } macro Rowles_Stephens_trigonal_rhom ( etac, etav, s400c,s400v, s202c,s202v, s301c,s301v, s211c,s211v, conv ) { #m_argu s400c If_Prm_Eqn_Rpt(s400c,s400v,) prm #m_unique s040c = CeV(s400c,s400v); prm #m_unique s004c = CeV(s400c,s400v); prm #m_unique s220c = CeV(s202c,s202v); #m_argu s202c If_Prm_Eqn_Rpt(s202c,s202v,) prm #m_unique s022c = CeV(s202c,s202v); prm #m_unique s310c = CeV(s301c,s301v); prm #m_unique s103c = CeV(s301c,s301v); prm #m_unique s031c = CeV(s301c,s301v); prm #m_unique s130c = CeV(s301c,s301v); #m_argu s301c If_Prm_Eqn_Rpt(s301c,s301v,) ' prm #m_unique s013c = CeV(s301c,s301v); #m_argu s211c If_Prm_Eqn_Rpt(s211c,s211v,) prm #m_unique s121c = CeV(s211c,s211v); prm #m_unique s112c = CeV(s211c,s211v); Rowles_Stephens_triclinic ( etac, etav, ,CeV(s400c,s400v), ,s040c, ,s004c, ,s220c, ,CeV(s202c,s202v), ,s022c, ,s310c, ,s103c, ,s031c, ,s130c, ,CeV(s301c,s301v), ,s013c, ,CeV(s211c,s211v), ,s121c, ,s112c, conv ) } macro Rowles_Stephens_trigonal_hex ( etac, etav, s400c,s400v, s004c,s004v, s202c,s202v, s301c,s301v, conv ) { #m_argu s400c If_Prm_Eqn_Rpt(s400c,s400v,) ' prm #m_unique s040c = CeV(s400c,s400v); #m_argu s004c If_Prm_Eqn_Rpt(s004c,s004v,) ' prm #m_unique s220c = 3 CeV(s400c,s400v); #m_argu s202c If_Prm_Eqn_Rpt(s202c,s202v,) ' prm #m_unique s022c = CeV(s202c,s202v); prm #m_unique s310c = 2 CeV(s400c,s400v); prm #m_unique !s103c = 0; prm #m_unique s031c = -1 CeV(s301c,s301v); prm #m_unique s130c = 2 CeV(s400c,s400v); #m_argu s301c If_Prm_Eqn_Rpt(s301c,s301v,) ' prm #m_unique !s013c = 0; prm #m_unique s211c = (3/2) CeV(s301c,s301v); prm #m_unique s121c = (-3/2) CeV(s301c,s301v); prm #m_unique s112c = CeV(s202c,s202v); Rowles_Stephens_triclinic ( etac, etav, ,CeV(s400c,s400v), ,s040c, ,CeV(s004c,s004v), ,s220c, ,CeV(s202c,s202v), ,s022c, ,s310c, ,s103c, ,s031c, ,s130c, ,CeV(s301c,s301v), ,s013c, ,s211c, ,s121c, ,s112c, conv ) } macro Rowles_Stephens_hexagonal ( etac, etav, s400c,s400v, s004c,s004v, s202c,s202v, conv ) { #m_argu s400c If_Prm_Eqn_Rpt(s400c,s400v,) prm #m_unique s040c = CeV(s400c,s400v); #m_argu s004c If_Prm_Eqn_Rpt(s004c,s004v,) prm #m_unique s220c = 3 CeV(s400c,s400v); #m_argu s202c If_Prm_Eqn_Rpt(s202c,s202v,) prm #m_unique s022c = CeV(s202c,s202v); prm #m_unique s310c = 2 CeV(s400c,s400v); prm #m_unique !s103c = 0; prm #m_unique !s031c = 0; prm #m_unique s130c = 2 CeV(s400c,s400v); prm #m_unique !s301c = 0; prm #m_unique !s013c = 0; prm #m_unique !s211c = 0; prm #m_unique !s121c = 0; prm #m_unique s112c = CeV(s202c,s202v); Rowles_Stephens_triclinic ( etac, etav, ,CeV(s400c,s400v), ,s040c, ,CeV(s004c,s004v), ,s220c, ,CeV(s202c,s202v), ,s022c, ,s310c, ,s103c, ,s031c, ,s130c, ,s301c, ,s013c, ,s211c, ,s121c, ,s112c, conv ) } macro Rowles_Stephens_cubic ( etac, etav, s400c,s400v, s220c,s220v, conv ) { #m_argu s400c If_Prm_Eqn_Rpt(s400c,s400v,) ' prm #m_unique s040c = CeV(s400c,s400v); prm #m_unique s004c = CeV(s400c,s400v); #m_argu s220c If_Prm_Eqn_Rpt(s220c,s220v,) ' prm #m_unique s202c = CeV(s220c,s220v); prm #m_unique s022c = CeV(s220c,s220v); prm #m_unique !s310c = 0; prm #m_unique !s103c = 0; prm #m_unique !s031c = 0; prm #m_unique !s130c = 0; prm #m_unique !s301c = 0; prm #m_unique !s013c = 0; prm #m_unique !s211c = 0; prm #m_unique !s121c = 0; prm #m_unique !s112c = 0; Rowles_Stephens_triclinic ( etac, etav, ,CeV(s400c,s400v), ,s040c, ,s004c, ,CeV(s220c,s220v), ,s202c, ,s022c, ,s310c, ,s103c, ,s031c, ,s130c, ,s301c, ,s013c, ,s211c, ,s121c, ,s112c, conv ) } macro & cellVolume(& a,& b,& c,& al,& be,& ga) { a b c Sqrt(1 - Cos(al Deg)^2 - Cos(be Deg)^2 - Cos(ga Deg)^2 + 2 Cos(al Deg) Cos(be Deg) Cos(ga Deg)) } macro & CV_triclinic(a,b,c,al,be,ga) { cellVolume(a,b,c,al,be,ga) } macro & CV_monoclinic(a,b,c,be) { cellVolume(a,b,c,90,be,90) } macro & CV_orthorhombic(a,b,c) { cellVolume(a,b,c,90,90,90) } macro & CV_rhombohedral(a,al) { cellVolume(a,a,a,al,al,al) } macro & CV_hexagonal(a,c) { cellVolume(a,a,c,90,90,120) } macro & CV_tetragonal(a,c) { cellVolume(a,a,c,90,90,90) } macro & CV_cubic(a) { cellVolume(a,a,a,90,90,90) } macro & S11(& a,& b,& c,& al,& be,& ga) { b^2 c^2 Sin(al Deg)^2 } macro & S22(& a,& b,& c,& al,& be,& ga) { a^2 c^2 Sin(be Deg)^2 } macro & S33(& a,& b,& c,& al,& be,& ga) { a^2 b^2 Sin(ga Deg)^2 } macro & S12(& a,& b,& c,& al,& be,& ga) { a b c^2 (Cos(al Deg) Cos(be Deg) - Cos(ga Deg)) } macro & S23(& a,& b,& c,& al,& be,& ga) { a^2 b c (Cos(be Deg) Cos(ga Deg) - Cos(al Deg)) } macro & S13(& a,& b,& c,& al,& be,& ga) { a b^2 c (Cos(ga Deg) Cos(al Deg) - Cos(be Deg)) } macro & d_spacing(& a,& b,& c,& al,& be,& ga, & h, & k, & l) { cellVolume(a,b,c,al,be,ga) / Sqrt(S11(a,b,c,al,be,ga) h^2 + S22(a,b,c,al,be,ga) k^2 + S33(a,b,c,al,be,ga) l^2 + 2 S12(a,b,c,al,be,ga) h k + 2 S23(a,b,c,al,be,ga) k l + 2 S13(a,b,c,al,be,ga) h l) } macro & DS_triclinic(a,b,c,al,be,ga,h,k,l) { d_spacing(a,b,c,al,be,ga,h,k,l) } macro & DS_monoclinic(a,b,c,be,h,k,l) { d_spacing(a,b,c,90,be,90,h,k,l) } macro & DS_orthorhombic(a,b,c,h,k,l) { d_spacing(a,b,c,90,90,90,h,k,l) } macro & DS_rhombohedral(a,al,h,k,l) { d_spacing(a,a,a,al,al,al,h,k,l) } macro & DS_hexagonal(a,c,h,k,l) { d_spacing(a,a,c,90,90,120,h,k,l) } macro & DS_tetragonal(a,c,h,k,l) { d_spacing(a,a,c,90,90,90,h,k,l) } macro & DS_cubic(a,h,k,l) { d_spacing(a,a,a,90,90,90,h,k,l) } 'returns 2Th in degrees given a d spacing macro & Th2_from_d(& d) { 2 ArcSin(Lam/(2 d)) Rad } 'http://topas.dur.ac.uk/topaswiki/doku.php?id=direct-derivation_method_qpa macro DDM(m,n,chemical_formula,wt) { 'formula masses' macro H { 1.008 } macro He { 4.003 } macro Li { 6.941 } macro Be { 9.012 } macro B { 10.811 } macro C { 12.011 } macro N { 14.007 } macro O { 15.999 } macro F { 18.998 } macro Ne { 20.18 } macro Na { 22.99 } macro Mg { 24.305 } macro Al { 26.982 } macro Si { 28.086 } macro P { 30.974 } macro S { 32.065 } macro Cl { 35.453 } macro Ar { 39.948 } macro K { 39.098 } macro Ca { 40.078 } macro Sc { 44.956 } macro Ti { 47.867 } macro V { 50.942 } macro Cr { 51.996 } macro Mn { 54.938 } macro Fe { 55.845 } macro Co { 58.933 } macro Ni { 58.693 } macro Cu { 63.546 } macro Zn { 65.39 } macro Ga { 69.723 } macro Ge { 72.64 } macro As { 74.922 } macro Se { 78.96 } macro Br { 79.904 } macro Kr { 83.8 } macro Rb { 85.468 } macro Sr { 87.62 } macro Y { 88.906 } macro Zr { 91.224 } macro Nb { 92.906 } macro Mo { 95.94 } macro Tc { 98 } macro Ru { 101.07 } macro Rh { 102.906 } macro Pd { 106.42 } macro Ag { 107.868 } macro Cd { 112.411 } macro In { 114.818 } macro Sn { 118.71 } macro Sb { 121.76 } macro Te { 127.6 } macro I { 126.905 } macro Xe { 131.293 } macro Cs { 132.906 } macro Ba { 137.327 } macro La { 138.906 } macro Ce { 140.116 } macro Pr { 140.908 } macro Nd { 144.24 } macro Pm { 145 } macro Sm { 150.36 } macro Eu { 151.964 } macro Gd { 157.25 } macro Tb { 158.925 } macro Dy { 162.5 } macro Ho { 164.93 } macro Er { 167.259 } macro Tm { 168.934 } macro Yb { 173.04 } macro Lu { 174.967 } macro Hf { 178.49 } macro Ta { 180.948 } macro W { 183.84 } macro Re { 186.207 } macro Os { 190.23 } macro Ir { 192.217 } macro Pt { 195.078 } macro Au { 196.967 } macro Hg { 200.59 } macro Tl { 204.383 } macro Pb { 207.2 } macro Bi { 208.98 } macro Po { 209 } macro At { 210 } macro Rn { 222 } macro Fr { 223 } macro Ra { 226 } macro Ac { 227 } macro Th { 232.038 } macro Pa { 231.036 } macro U { 238.029 } prm DDM_M_##m =chemical_formula; 'formula mass' #delete_macros { H He Li Be B C N O F Ne Na Mg Al Si P S Cl Ar K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe Cs Ba La Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn Fr Ra Ac Th Pa U } 'square electrons' macro H { ( 1^2) } macro He { ( 2^2) } macro Li { ( 3^2) } macro Be { ( 4^2) } macro B { (5^2) } macro C { ( 6^2) } macro N { ( 7^2) } macro O { ( 8^2) } macro F { ( 9^2) } macro Ne { (10^2) } macro Na { (11^2) } macro Mg { (12^2) } macro Al { (13^2) } macro Si { (14^2) } macro P { (15^2) } macro S { (16^2) } macro Cl { (17^2) } macro Ar { (18^2) } macro K { (19^2) } macro Ca { (20^2) } macro Sc { (21^2) } macro Ti { (22^2) } macro V { (23^2) } macro Cr { (24^2) } macro Mn { (25^2) } macro Fe { (26^2) } macro Co { (27^2) } macro Ni { (28^2) } macro Cu { (29^2) } macro Zn { (30^2) } macro Ga { (31^2) } macro Ge { (32^2) } macro As { (33^2) } macro Se { (34^2) } macro Br { (35^2) } macro Kr { (36^2) } macro Rb { (37^2) } macro Sr { (38^2) } macro Y { (39^2) } macro Zr { (40^2) } macro Nb { (41^2) } macro Mo { (42^2) } macro Tc { (43^2) } macro Ru { (44^2) } macro Rh { (45^2) } macro Pd { (46^2) } macro Ag { (47^2) } macro Cd { (48^2) } macro In { (49^2) } macro Sn { (50^2) } macro Sb { (51^2) } macro Te { (52^2) } macro I { (53^2) } macro Xe { (54^2) } macro Cs { (55^2) } macro Ba { (56^2) } macro La { (57^2) } macro Ce { (58^2) } macro Pr { (59^2) } macro Nd { (60^2) } macro Pm { (61^2) } macro Sm { (62^2) } macro Eu { (63^2) } macro Gd { (64^2) } macro Tb { (65^2) } macro Dy { (66^2) } macro Ho { (67^2) } macro Er { (68^2) } macro Tm { (69^2) } macro Yb { (70^2) } macro Lu { (71^2) } macro Hf { (72^2) } macro Ta { (73^2) } macro W { (74^2) } macro Re { (75^2) } macro Os { (76^2) } macro Ir { (77^2) } macro Pt { (78^2) } macro Au { (79^2) } macro Hg { (80^2) } macro Tl { (81^2) } macro Pb { (82^2) } macro Bi { (83^2) } macro Po { (84^2) } macro At { (85^2) } macro Rn { (86^2) } macro Fr { (87^2) } macro Ra { (88^2) } macro Ac { (89^2) } macro Th { (90^2) } macro Pa { (91^2) } macro U { (92^2) } prm DDM_n2_##m = chemical_formula ; 'square electrons' #delete_macros { H He Li Be B C N O F Ne Na Mg Al Si P S Cl Ar K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ag Cd In Sn Sb Te I Xe Cs Ba La Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu Hf Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn Fr Ra Ac Th Pa U } prm DDM_a_##m = DDM_M_##m / DDM_n2_##m; 'mass per square electron' prm DDM_A_##m = Get(numerical_area); 'numerical area of phase' prm DDM_m_##m = DDM_a_##m DDM_A_##m; ' "mass" of this phase' 'calculating total weight of all phases so I can calculate weight fraction' ' currently limited to only 10 phases, but can be easily extended.' #m_if m == 1; #m_if n == 1; prm DDM_m_total = DDM_m_1; #m_elseif n == 2; prm DDM_m_total = DDM_m_1+DDM_m_2; #m_elseif n == 3; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3; #m_elseif n == 4; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4; #m_elseif n == 5; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4+DDM_m_5; #m_elseif n == 6; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4+DDM_m_5+DDM_m_6; #m_elseif n == 7; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4+DDM_m_5+DDM_m_6+DDM_m_7; #m_elseif n == 8; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4+DDM_m_5+DDM_m_6+DDM_m_7+DDM_m_8; #m_elseif n == 9; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4+DDM_m_5+DDM_m_6+DDM_m_7+DDM_m_8+DDM_m_9; #m_elseif n ==10; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4+DDM_m_5+DDM_m_6+DDM_m_7+DDM_m_8+DDM_m_9+DDM_m_10; #m_endif #m_endif prm DDM_w_##m = 100 DDM_m_##m / DDM_m_total; : wt 'weight percentage' } macro DDM_M_n2(m,n,M,n2,wt) { prm DDM_M_##m = M; 'formula mass' prm DDM_n2_##m = n2; 'square electrons' prm DDM_a_##m = DDM_M_##m / DDM_n2_##m; 'mass per square electron' prm DDM_A_##m = Get(numerical_area); 'numerical area of phase' prm DDM_m_##m = DDM_a_##m DDM_A_##m; ' "mass" of this phase' 'calculating total weight of all phases so I can calculate weight fraction' ' currently limited to only 10 phases, but can be easily extended.' #m_if m == 1; #m_if n == 1; prm DDM_m_total = DDM_m_1; #m_elseif n == 2; prm DDM_m_total = DDM_m_1+DDM_m_2; #m_elseif n == 3; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3; #m_elseif n == 4; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4; #m_elseif n == 5; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4+DDM_m_5; #m_elseif n == 6; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4+DDM_m_5+DDM_m_6; #m_elseif n == 7; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4+DDM_m_5+DDM_m_6+DDM_m_7; #m_elseif n == 8; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4+DDM_m_5+DDM_m_6+DDM_m_7+DDM_m_8; #m_elseif n == 9; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4+DDM_m_5+DDM_m_6+DDM_m_7+DDM_m_8+DDM_m_9; #m_elseif n ==10; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4+DDM_m_5+DDM_m_6+DDM_m_7+DDM_m_8+DDM_m_9+DDM_m_10; #m_endif #m_endif prm DDM_w_##m = 100 DDM_m_##m / DDM_m_total; : wt 'weight percentage' } macro DDM_a(m,n,alpha,wt) { prm DDM_a_##m = alpha; 'mass per square electron' prm DDM_A_##m = Get(numerical_area); 'numerical area of phase' prm DDM_m_##m = DDM_a_##m DDM_A_##m; ' "mass" of this phase' 'calculating total weight of all phases so I can calculate weight fraction' ' currently limited to only 10 phases, but can be easily extended.' #m_if n == 1; prm DDM_m_total = DDM_m_1; #m_elseif n == 2; prm DDM_m_total = DDM_m_1+DDM_m_2; #m_elseif n == 3; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3; #m_elseif n == 4; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4; #m_elseif n == 5; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4+DDM_m_5; #m_elseif n == 6; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4+DDM_m_5+DDM_m_6; #m_elseif n == 7; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4+DDM_m_5+DDM_m_6+DDM_m_7; #m_elseif n == 8; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4+DDM_m_5+DDM_m_6+DDM_m_7+DDM_m_8; #m_elseif n == 9; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4+DDM_m_5+DDM_m_6+DDM_m_7+DDM_m_8+DDM_m_9; #m_elseif n ==10; prm DDM_m_total = DDM_m_1+DDM_m_2+DDM_m_3+DDM_m_4+DDM_m_5+DDM_m_6+DDM_m_7+DDM_m_8+DDM_m_9+DDM_m_10; #m_endif prm DDM_w_##m = 100 DDM_m_##m / DDM_m_total; : wt 'weight fraction' } '------------------------------------------------------------------------------------------------- '------------------------------------------------------------------------------------------------- '------------------------------------------------------------------------------------------------- '------------------------------------------------------------------------------------------------- '------------------------------------------------------------------------------------------------- ' Small angle scattering macros '------------------------------------------------------------------------------------------------- '------------------------------------------------------------------------------------------------- '------------------------------------------------------------------------------------------------- '------------------------------------------------------------------------------------------------- '------------------------------------------------------------------------------------------------- macro linear_q { macro q { X } } macro log_q { macro q { (10^X) } } 'unified fit - single level macro Unified_Fit(G,G_v,Rg,Rg_v,B,B_v,P,P_v) { Unified_Fit(G,G_v,Rg,Rg_v,B,B_v,P,P_v,, 0) } macro Unified_Fit(G,G_v,Rg,Rg_v,B,B_v,P,P_v,Rgco, Rgco_v) { #m_argu G #m_argu Rg #m_argu B #m_argu P #m_argu Rgco If_Prm_Eqn_Rpt(G, G_v, min 0 max 1e10) If_Prm_Eqn_Rpt(Rg, Rg_v, min 0 max 1e10) If_Prm_Eqn_Rpt(B, B_v, min 0 max 1e10) If_Prm_Eqn_Rpt(P, P_v, min 1 max 5) If_Prm_Eqn_Rpt(Rgco, Rgco_v, min 0 max 1e10) fit_obj = CeV(G, G_v) Exp((q CeV(Rg, Rg_v))^2 / -3) + Exp((q CeV(Rgco, Rgco_v))^2 / -3) CeV(B, B_v) ((Erf_Approx(q CeV(Rg, Rg_v)/Sqrt(6)))^3 / q )^CeV(P, BP_v); } macro SAXS_bg(bg,bg_v) { #m_argu bg If_Prm_Eqn_Rpt(bg, bg_v, min 0 max 100) fit_obj = CeV(bg, bg_v); } 'from Ectors macro AnisoCS( mod, h11, k11, l11, h22, k22, l22, ac, av, bc, bv, cc, cv, pc, pv, tc, tv, nc, nv, sp) { ' As published in Ectors et al. (2015) J. Appl. Cryst. 48, 189-194 ' mod which model to use 1 for ellipsoid 2 for elliptic cylinder 3 for cuboid ' h11 k11 l11 vector defining the z-axis ' h22 k22 l22 vector defining the x-axis ' av bv cv rx ry rz of the model ' pv tv nv additional rotation parameters theta' theta' nu ' sp activate special method for triclinic systems 1/0 on/off ' --------- Code starts here ------ peak_buffer_step 0 'Initialize variables #m_argu mod #m_argu ac If_Prm_Eqn_Rpt(ac, av, min 0.0001 max 10000) #m_argu bc If_Prm_Eqn_Rpt(bc, bv, min 0.0001 max 10000) #m_argu cc If_Prm_Eqn_Rpt(cc, cv, min 0.0001 max 10000) #m_argu pc If_Prm_Eqn_Rpt(pc, pv, min 0 max 180) #m_argu tc If_Prm_Eqn_Rpt(tc, tv, min 0 max 180) #m_argu nc If_Prm_Eqn_Rpt(nc, nv, min 0 max 360) 'G-Metrictensor just for output local !m11 = Get(a)^2; local !m12 = Get(a)*Get(b)*Cos(Get(ga)*Deg); local !m13 = Get(a)*Get(c)*Cos(Get(be)*Deg); local !m21 = m12; local !m22 = Get(b)^2; local !m23 = Get(b)*Get(c)*Cos(Get(al)*Deg); local !m31 = m13; local !m32 = m23; local !m33 = Get(c)^2; 'G*-Reciprocal metrictensor and reciprocal lattice parameters local !vol = Get(a)*Get(b)*Get(c)*Sqrt(1-((Cos(Get(al)*Deg))^2)-((Cos(Get(be)*Deg))^2)-((Cos(Get(ga)*Deg))^2)+2*(Cos(Get(al)*Deg)*Cos(Get(be)*Deg)*Cos(Get(ga)*Deg))); local !ar = (Get(b)*Get(c)*Sin(Get(al)*Deg))/vol; local !br = (Get(a)*Get(c)*Sin(Get(be)*Deg))/vol; local !cr = (Get(b)*Get(a)*Sin(Get(ga)*Deg))/vol; local !alr = (Cos(Get(be)*Deg)*Cos(Get(ga)*Deg)-Cos(Get(al)*Deg))/(Sin(Get(be)*Deg)*Sin(Get(ga)*Deg)); local !ber = (Cos(Get(al)*Deg)*Cos(Get(ga)*Deg)-Cos(Get(be)*Deg))/(Sin(Get(al)*Deg)*Sin(Get(ga)*Deg)); local !gar = (Cos(Get(be)*Deg)*Cos(Get(al)*Deg)-Cos(Get(ga)*Deg))/(Sin(Get(be)*Deg)*Sin(Get(al)*Deg)); local !r11 = ar^2; local !r12 = ar*br*gar; local !r13 = ar*cr*ber; local !r21 = r12; local !r22 = br^2; local !r23 = br*cr*alr; local !r31 = r13; local !r32 = r23; local !r33 = cr^2; 'Test if special method triclinic is activated #m_ifarg sp 1 local !h1 = 0; local !h2 = If(alr <= 0.00001, 0 , 1); local !k1 = 0; local !k2 = If(alr <= 0.00001, 1 , -(r31 / r32)); local !l1 = 1; local !l2 = 0; #m_else local !h1 = h11; local !h2 = h22; local !k1 = k11; local !k2 = k22; local !l1 = l11; local !l2 = l22; #m_endif '|hkl|Prim aka z-axis local rowh1 = (h1 r11 + k1 r12 + l1 r13)*h1; local rowk1 = (h1 r21 + k1 r22 + l1 r23)*k1; local rowl1 = (h1 r31 + k1 r32 + l1 r33)*l1; local dvec1 = Sqrt(rowh1+rowk1+rowl1); '|hkl|Sec aka x-axis local rowh2 = (h2 r11 + k2 r12 + l2 r13)*h2; local rowk2 = (h2 r21 + k2 r22 + l2 r23)*k2; local rowl2 = (h2 r31 + k2 r32 + l2 r33)*l2; local dvec2 = Sqrt(rowh2+rowk2+rowl2); '|hkl|Current local rowH = (H r11 + K r12 + L r13)*H; local rowK = (H r21 + K r22 + L r23)*K; local rowL = (H r31 + K r32 + L r33)*L; local dvec3 = Sqrt(rowH+rowK+rowL); 'Angle phi local rowg1 = (H r11 + K r12 + L r13)*h1; local rowg2 = (H r21 + K r22 + L r23)*k1; local rowg3 = (H r31 + K r32 + L r33)*l1; local sum1 = rowg1+rowg2+rowg3; local cosphi = (sum1/(dvec1*dvec3)); local sinphi = Sqrt(Abs(1-(cosphi^2))); 'Angle theta local rowp1 = (H r11 + K r12 + L r13)*h2; local rowp2 = (H r21 + K r22 + L r23)*k2; local rowp3 = (H r31 + K r32 + L r33)*l2; local sum2 = rowp1+rowp2+rowp3; local coseta =(sum2/(dvec2*dvec3)); local costheta = If(sinphi <= 0.00001, 1, coseta/sinphi); local sintheta = Sqrt(Abs(1-(costheta^2))); 'Handedness local p = h1*(k2*L - l2*K) + k1*(l2*H - h2*L) + l1*(h2*K - k2*H); local pre = If (p <= 0 , -1 , 1); 'Rotation: Rotationmatrix and calculation of phirot and thetarot local grot11 = (Cos(CeV(tc,tv) * Deg)*Cos(CeV(pc,pv) * Deg)*Cos(CeV(nc,nv) * Deg))-(Sin(CeV(tc,tv) * Deg)*Sin(CeV(nc,nv) * Deg)); local grot21 = -(Cos(CeV(tc,tv) * Deg)*Cos(CeV(pc,pv) * Deg)*Sin(CeV(nc,nv) * Deg))-(Sin(CeV(tc,tv) * Deg)*Cos(CeV(nc,nv) * Deg)); local grot31 = Cos(CeV(tc,tv) * Deg)*Sin(CeV(pc,pv) * Deg); local grot12 = (Sin(CeV(tc,tv) * Deg)*Cos(CeV(pc,pv) * Deg)*Cos(CeV(nc,nv) * Deg))+(Cos(CeV(tc,tv) * Deg)*Sin(CeV(nc,nv) * Deg)); local grot22 = -(Sin(CeV(tc,tv) * Deg)*Cos(CeV(pc,pv) * Deg)*Sin(CeV(nc,nv) * Deg))+(Cos(CeV(tc,tv) * Deg)*Cos(CeV(nc,nv) * Deg)); local grot32 = Sin(CeV(tc,tv) * Deg)*Sin(CeV(pc,pv) * Deg); local grot13 = -(Sin(CeV(pc,pv) * Deg)*Cos(CeV(nc,nv) * Deg)); local grot23 = Sin(CeV(pc,pv) * Deg)*Sin(CeV(nc,nv) * Deg); local grot33 = Cos(CeV(pc,pv) * Deg); local cosphirot = (costheta*sinphi*grot31)+(pre*sintheta*sinphi*grot32)+(cosphi*grot33); local sinphirot = Sqrt(Abs(1-(cosphirot^2))); local xfac = (costheta*sinphi*grot11)+(pre*sintheta*sinphi*grot12)+(cosphi*grot13); local costhetarot = If(sinphirot <= 0.0001, 1, xfac / sinphirot); local sinthetarot = Sqrt(Abs(1-(costhetarot^2))); 'Models: 'Ellipsoid #m_ifarg mod 1 local volop = ((4/3) 3.14159265358979 CeV(ac,av) CeV(bc,bv) CeV(cc,cv)); local areaop = 3.14159265358979 Sqrt(((CeV(cc,cv) sinphirot)^2)(((CeV(ac,av) sinthetarot)^2)+(CeV(bc,bv) costhetarot)^2)+((CeV(ac,av) CeV(bc,bv) cosphirot)^2)); local sizeL = volop / areaop; #m_endif 'Cylinder #m_ifarg mod 2 local volop = (3.14159265358979 CeV(ac,av) CeV(bc,bv) (2 * CeV(cc,cv))); local areaop = (Sqrt( ((CeV(ac,av) sinthetarot)^2) + ((CeV(bc,bv) costhetarot)^2)) 4 * CeV(cc,cv) * Abs(sinphirot)) + (3.14159265358979 CeV(ac,av) CeV(bc,bv) Abs(cosphirot)); local sizeL = volop / areaop; #m_endif 'Cuboid #m_ifarg mod 3 local volop = (8 CeV(ac,av) CeV(bc,bv) CeV(cc,cv)); local areaop = 4 CeV(ac,av) CeV(bc,bv) Abs(cosphirot) + 4 CeV(ac,av) CeV(cc,cv) Abs(sinphirot) Abs(sinthetarot) + 4 CeV(bc,bv) CeV(cc,cv) Abs(costhetarot) Abs(sinphirot) ; local sizeL = volop / areaop; #m_endif 'For Output purposes only local ax = CeV(ac,av); local bx = CeV(bc,bv); local cx = CeV(cc,cv); local px = CeV(pc,pv); local tx = CeV(tc,tv); local nx = CeV(nc,nv); local modx = mod; local vole = volop; local larea = volop^(1/3); local kk = larea / sizeL ; local areaoe = areaop; local phi = If(cosphi < -1, 180, If (cosphi > 1, 0, ArcCos(cosphi)*Rad)); local the = If(costheta < -1, 180, If (costheta > 1, 0, ArcCos(costheta)*Rad)); local phirot = If(cosphirot < -1, 180, If (cosphirot > 1, 0, ArcCos(cosphirot)*Rad)); local therot = If(costhetarot < -1, 180, If (costhetarot > 1, 0, ArcCos(costhetarot)*Rad)); 'CS_Macro 'lor_fwhm = 0.1 180/pi^2 * Lambda / Cos(Th) * sizeL ... 0.1 for nm->Angstroem lor_fwhm = 0.1 18.2378130556208 Lam / (Cos(Th) sizeL); } macro AnisoCSout(file) { ' As published in Ectors et al. (2015) J. Appl. Cryst. 48, 189-194 out file Out_String("Analysis Report: ") Out(Get(phase_name),"%s \n") Out(Get (r_wp), " Rwp: %8.3f \n") Out(Get (r_exp), " Rexp:%8.3f \n\n") Out_String("G-Metrictensor \n\n") Out(m11,"%8.3f") Out(m12,"%8.3f") Out(m13,"%8.3f\n") Out(m21,"%8.3f") Out(m22,"%8.3f") Out(m23,"%8.3f\n") Out(m31,"%8.3f") Out(m32,"%8.3f") Out(m33,"%8.3f\n\n") Out_String("G*-Metrictensor \n\n") Out(r11,"%8.3f") Out(r12,"%8.3f") Out(r13,"%8.3f\n") Out(r21,"%8.3f") Out(r22,"%8.3f") Out(r23,"%8.3f\n") Out(r31,"%8.3f") Out(r32,"%8.3f") Out(r33,"%8.3f\n\n") Out_String("Rotationmatrix \n\n") Out(grot11,"%8.3f") Out(grot12,"%8.3f") Out(grot13,"%8.3f\n") Out(grot21,"%8.3f") Out(grot22,"%8.3f") Out(grot23,"%8.3f\n") Out(grot31,"%8.3f") Out(grot32,"%8.3f") Out(grot33,"%8.3f\n\n") Out_String("Model parameters \n") Out_String(" (1) Ellipsoid / (2) Cylinder / (3) Cuboid \n") Out(modx, " Model: %1.0f \n\n") Out(h1," z-axis hkl: %8.3f") Out(k1," %8.3f") Out(l1," %8.3f \n") Out(px, " Rotation phi: %8.3f") Out(tx, " theta: %8.3f \n\n") Out(h2," x-axis hkl: %8.3f") Out(k2," %8.3f") Out(l2," %8.3f \n") Out(nx, " Additional rotation nu: %8.3f \n\n") Out(ax," rx-radius: %8.3f nm \n") Out(bx," ry-radius: %8.3f nm \n") Out(cx," rz-radius: %8.3f nm \n") Out(vole," Volume: %8.3f nm^3 \n") Out(larea," : %8.3f nm \n\n") Out_String(" H K L M 2Th D phi theta phirot thetarot \n") phase_out file append load out_record out_fmt out_eqn { "%4.0f" = H; "%4.0f" = K; "%4.0f" = L; "%4.0f" = M; "%8.3f" = 2 Th Rad; "%8.3f" = D_spacing; "%8.3f" = phi; "%8.3f" = the; "%8.3f" = phirot; "%8.3f" = therot; "%8.3f\n" = sizeL; } } macro AnisoCSg( tauc, tauv) { #m_argu tauc If_Prm_Eqn_Rpt(tauc, tauv, min 1 max 2) 'Parameters Eq.(5-7) local para = Abs((costhetarot*sinphirot)/ax); local parb = Abs((sinthetarot*sinphirot)/bx); local parc = Abs((cosphirot)/cx); 'Parameters chapter 2.4 local pard = Sqrt(para^2+parb^2); local pare = pard/parc; local parf = Sqrt(1-pare^2); 'Here comes the tricky part 'Ellipsoid Eq.(4) local ev = If(modx < 2,CeV(tauc,tauv) * (9/8) * sizeL, 'Cylinder If(modx < 3, 'Eq. (11) If(pard <= 0.0001,CeV(tauc, tauv) * sizeL, 'Eq. (12) If(pard < parc, CeV(tauc, tauv) * ( (2/parc) - (8/(3.14159265358979*pard)) * (-(2/3)+(2/3)*parf+((pare*pare*parf)/3)+(pare*ArcSin(pare)))+ ((2*parc)/(3.14159265358979*pard*pard))*(((pare*parf)/2)-((1/2)*(ArcSin(pare)))+(pare*pare*pare*parf)+(2*pare*pare*ArcSin(pare)))), 'Eq. (13) CeV(tauc, tauv)*((16)/(3*3.14159265358979*pard))-((2*parc)/(4*pard*pard)))), 'Cuboid 'Eq. (8) If(And(para>=parb, para>=parc),CeV(tauc, tauv)*(2/para)*(1-(parb/(3*para))-(parc/(3*para))+((parb*parc)/(6*para*para))), 'Eq. (9) If(And(parb>=para, parb>=parc),CeV(tauc, tauv)*(2/parb)*(1-(para/(3*parb))-(parc/(3*parb))+((para*parc)/(6*parb*parb))), 'Eq. (10) CeV(tauc, tauv)*(2/parc)*(1-(para/(3*parc))-(parb/(3*parc))+((para*parb)/(6*parc*parc)))))) ); 'IB calculations Eq. (1-3) local ibV = 1/ev; local ibL = 1/(2*sizeL); 'ibG is 0 if ibV < ibL local ibG = If (ibV > ibL, ((Sqrt((4*ibV^2)-(4.27679864*ibV*ibL)+(0.27679864*ibL^2)))/2), 0); 'CS_G macro local sizeG = ibG/(Sqrt(3.14159265358979/(4*Ln(2)))); gauss_fwhm = 0.1 Rad Lam sizeG / Cos(Th); 'For Output purposes only local taux = CeV(tauc, tauv); } macro AnisoCSgout(file) { out file Out_String("Analysis Report: ") Out(Get(phase_name),"%s \n") Out(Get (r_wp), " Rwp: %8.3f \n") Out(Get (r_exp), " Rexp:%8.3f \n\n") Out_String("G-Metrictensor \n\n") Out(m11,"%8.3f") Out(m12,"%8.3f") Out(m13,"%8.3f\n") Out(m21,"%8.3f") Out(m22,"%8.3f") Out(m23,"%8.3f\n") Out(m31,"%8.3f") Out(m32,"%8.3f") Out(m33,"%8.3f\n\n") Out_String("G*-Metrictensor \n\n") Out(r11,"%8.3f") Out(r12,"%8.3f") Out(r13,"%8.3f\n") Out(r21,"%8.3f") Out(r22,"%8.3f") Out(r23,"%8.3f\n") Out(r31,"%8.3f") Out(r32,"%8.3f") Out(r33,"%8.3f\n\n") Out_String("Rotationmatrix \n\n") Out(grot11,"%8.3f") Out(grot12,"%8.3f") Out(grot13,"%8.3f\n") Out(grot21,"%8.3f") Out(grot22,"%8.3f") Out(grot23,"%8.3f\n") Out(grot31,"%8.3f") Out(grot32,"%8.3f") Out(grot33,"%8.3f\n\n") Out_String("Model parameters \n") Out_String(" (1) Ellipsoid / (2) Cylinder / (3) Cuboid \n") Out(modx, " Model: %1.0f \n\n") Out(h1," z-axis hkl: %8.3f") Out(k1," %8.3f") Out(l1," %8.3f \n") Out(px, " Rotation phi: %8.3f") Out(tx, " theta: %8.3f \n\n") Out(h2," x-axis hkl: %8.3f") Out(k2," %8.3f") Out(l2," %8.3f \n") Out(nx, " Additional rotation nu: %8.3f \n\n") Out(ax," rx-radius_surf: %8.3f nm ") Out(ax*taux,"/ rx-radius_vol: %8.3f nm \n") Out(bx," ry-radius_surf: %8.3f nm ") Out(bx*taux,"/ ry-radius_vol: %8.3f nm \n") Out(cx," rz-radius_surf: %8.3f nm ") Out(cx*taux,"/ rz-radius_vol: %8.3f nm \n") Out(vole," Volume_surf: %8.3f nm^3 ") Out(vole*taux*taux*taux,"/ Volume_vol: %8.3f nm^3 \n") Out(larea," _surf: %8.3f nm ") Out(larea*taux,"/ _vol: %8.3f nm \n\n") Out_String("Distribution parameters \n") Out(taux," Tau: %8.4f \n") Out_String(" If Lognormal of \n") Out(Ln(larea*taux)-(3.5*Ln(taux))," Logn. mean:%8.4f \n") Out(Sqrt(Ln(taux))," Logn. var.: %8.4f \n\n") Out_String(" H K L M 2Th D / \n") phase_out file append load out_record out_fmt out_eqn { "%4.0f" = H; "%4.0f" = K; "%4.0f" = L; "%4.0f" = M; "%8.3f" = 2 Th Rad; "%8.3f" = D_spacing; "%8.3f" = sizeL; "%8.3f" = ev; "%8.3f\n" = ev/sizeL; } } macro PlotAnisoCS { 'ellipsoid normals_plot = If(modx < 2, sizeL*(3/4), 'cylinder If(modx < 3, 1/( ( ((Abs((1/cx)*cosphirot))^(10))+((Abs((sinphirot))^(10))*( ((Abs((1/bx)*sinthetarot))^(2)) + ((Abs((1/ax)*costhetarot))^(2)) )^(5) ) )^(1/10) ), 'cuboid 1/( ( ((Abs((1/cx)*cosphirot))^(10))+((Abs((sinphirot))^(10))*( ((Abs((1/bx)*sinthetarot))^(10)) + ((Abs((1/ax)*costhetarot))^(10)) ) ) )^(1/10) ) ) ); } '************************************************************************************************** '************************************************************************************************** '************************************************************************************************** '************************************************************************************************** '************************************************************************************************** '************************************************************************************************** 'Test area 'from my maths 'This needs to be fixed so that I'm actually doing the correct thing with the fwhm's ' for God's sake, don't use this for real. macro Peak_Width_Correction_Not_Fully_Illuminated_Capillary(v) { Peak_Width_Correction_Not_Fully_Illuminated_Capillary(,v) } macro Peak_Width_Correction_Not_Fully_Illuminated_Capillary(c, v) { 'assumes that the beam is central on the capillary 'assumes single scattering, no correction for absorption #m_argu c If_Prm_Eqn_Rpt(c, v, min 0.0001 max 1, del 0.01 ) 'ratio of beam height to capillary diameter prm sin_phi = CeV(c,v); prm cos_phi = Sqrt(1-CeV(c,v)^2); prm cos_2Tc = CeV(c,v); ' critical angle, where the projected width of the diffracted beam is the same as the cap. diametre prm sincos = Sin(2 Th) cos_phi; prm cossin = Cos(2 Th) sin_phi; If(2 Th <= 90 Deg, If(Cos(2 Th) > cos_2Tc, "real_fwhm" = "calc_fwhm" (sincos + cossin);, "real_fwhm" = "calc_fwhm";), If(Cos(180 Deg - 2 Th)) > cos_2Tc, "real_fwhm" = "calc_fwhm" (sincos - cossin);, "real_fwhm" = "calc_fwhm";) ); } /* macro refineAll { } User_Defined_Dependence_Convolution(lor_fwhm , 1/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(gauss_fwhm , 1/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , 1/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , 1/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , 1/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , 1/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(circles_conv , 1/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(one_on_x_conv , 1/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(lor_fwhm , Th/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(gauss_fwhm , Th/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Th/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , Th/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , Th/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Th/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(circles_conv , Th/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(one_on_x_conv , Th/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(lor_fwhm , Sin(Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(gauss_fwhm , Sin(Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Sin(Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , Sin(Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , Sin(Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Sin(Th)/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(circles_conv , Sin(Th)/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(one_on_x_conv , Sin(Th)/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(lor_fwhm , Sin(2 Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(gauss_fwhm , Sin(2 Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Sin(2 Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , Sin(2 Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , Sin(2 Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Sin(2 Th)/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(circles_conv , Sin(2 Th)/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(one_on_x_conv , Sin(2 Th)/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(lor_fwhm , (1/Sin(Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(gauss_fwhm , (1/Sin(Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Sin(Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , (1/Sin(Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Sin(Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Sin(Th))/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(circles_conv , (1/Sin(Th))/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Sin(Th))/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(lor_fwhm , (1/Sin(2 Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(gauss_fwhm , (1/Sin(2 Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Sin(2 Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , (1/Sin(2 Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Sin(2 Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Sin(2 Th))/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(circles_conv , (1/Sin(2 Th))/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Sin(2 Th))/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(lor_fwhm , Cos(Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(gauss_fwhm , Cos(Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Cos(Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , Cos(Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , Cos(Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Cos(Th)/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(circles_conv , Cos(Th)/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(one_on_x_conv , Cos(Th)/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(lor_fwhm , Cos(2 Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(gauss_fwhm , Cos(2 Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Cos(2 Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , Cos(2 Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , Cos(2 Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Cos(2 Th)/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(circles_conv , Cos(2 Th)/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(one_on_x_conv , Cos(2 Th)/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(lor_fwhm , (1/Cos(Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(gauss_fwhm , (1/Cos(Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Cos(Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , (1/Cos(Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Cos(Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Cos(Th))/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(circles_conv , (1/Cos(Th))/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Cos(Th))/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(lor_fwhm , (1/Cos(2 Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(gauss_fwhm , (1/Cos(2 Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Cos(2 Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , (1/Cos(2 Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Cos(2 Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Cos(2 Th))/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(circles_conv , (1/Cos(2 Th))/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Cos(2 Th))/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(lor_fwhm , Tan(Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(gauss_fwhm , Tan(Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Tan(Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , Tan(Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , Tan(Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Tan(Th)/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(circles_conv , Tan(Th)/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(one_on_x_conv , Tan(Th)/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(lor_fwhm , Tan(2 Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(gauss_fwhm , Tan(2 Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Tan(2 Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , Tan(2 Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , Tan(2 Th)/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , Tan(2 Th)/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(circles_conv , Tan(2 Th)/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(one_on_x_conv , Tan(2 Th)/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(lor_fwhm , (1/Tan(Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(gauss_fwhm , (1/Tan(Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Tan(Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , (1/Tan(Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Tan(Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Tan(Th))/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(circles_conv , (1/Tan(Th))/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Tan(Th))/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(lor_fwhm , (1/Tan(2 Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(gauss_fwhm , (1/Tan(2 Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Tan(2 Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(circles_conv , (1/Tan(2 Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Tan(2 Th))/100 , refineAll , 0.1 min 0 max 2) User_Defined_Dependence_Convolution(exp_conv_const , (1/Tan(2 Th))/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(circles_conv , (1/Tan(2 Th))/100 , refineAll , -0.1 max 0 min -2) User_Defined_Dependence_Convolution(one_on_x_conv , (1/Tan(2 Th))/100 , refineAll , -0.1 max 0 min -2) */