##DESCRIPTION ## DBsubject('') ## DBchapter('') ## DBsection('') ## KEYWORDS('', '') ## Author('') ## Institution('') ##ENDDESCRIPTION DOCUMENT(); loadMacros( "PG.pl", "PGbasicmacros.pl", "PGchoicemacros.pl", "PGanswermacros.pl", "PGauxiliaryFunctions.pl", "PGgraphmacros.pl", "PGasu.pl", "unionTables.pl","unionMacros.pl" ); ####################### TEXT($BEGIN_ONE_COLUMN,beginproblem()) ; $refreshCachedImages = 1; $showPartialCorrectAnswers = 1; ############### # case 0 - LL90 pythagoras # case 0.1 - LL90 pythagoras - small sides # case 0.2 - LL90 pythagoras - large sides # case 0.3 - LL90 pythagoras - scientific notation # case 1 - HL90 pythagoras # case 1.1 - HL90 pythagoras - small sides # case 1.2 - HL90 pythagoras - large sides # case 1.3 - HL90 pythagoras - scientific notation # case 2 - LL90 solve # case 2.1 - LL90 solve - small numbers # case 2.2 - LL90 solve - large numbers # case 2.3 - LL90 solve - scientific notation # case 3 - HL90 solve # case 3.1 - HL90 solve - small numbers # case 3.2 - HL90 solve - large numbers # case 3.3 - HL90 solve - scientific notation # case 4 - AL90 solve # case 4.1 - AL90 solve - small numbers # case 4.2 - AL90 solve - large numbers # case 4.3 - AL90 solve - scientific notation # case 5 - AH90 solve # case 5.1 - AH90 solve - small numbers # case 5.2 - AH90 solve - large numbers # case 5.3 - AH90 solve - scientific notation # case 6 - sss - random largest angle # case 6.1 - sss - random largest angle - small numbers # case 6.2 - sss - random largest angle - large numbers # case 6.3 - sss - random largest angle - scientific notation # case 6.4 - sss - one angle obtuse # case 6.5 - sss - one angle obtuse - small numbers # case 6.6 - sss - one angle obtuse - large numbers # case 6.7 - sss - one anngle obtuse - scientific notation # case 7 - sas cosine law acute # case 7.1 - sas cosine law acute small sides # case 7.2 - sas cosine law acute large sides # case 7.3 - sas cosine law acute scientific notation # case 8 - sas cosine law obtuse # case 8.1 - sas cosine law obtuse small sides # case 8.2 - sas cosine law obtuse large sides # case 8.3 - sas cosine law obtuse scientific notation # case 9 - ass acute # case 9.1 - ass acute - small sides # case 9.2 - ass acute - large sides # case 9.3 - ass acute - scientific notation # case 10 - ass obtuse # case 10.1 - ass obtuse - small sides # case 10.2 - ass obtuse - large sides # case 10.3 - ass obtuse - scientific notation # case 11 - asa # case 11.1 - asa - small sides # case 11.2 - asa - large sides # case 11.3 - asa - scientific notation ########################################### @case = (0,1,2,3,4,5); @case = @case [NchooseK(6,6)]; @case = (0,0.1,0.2,0.3,1,1.1,1.2,1.3,2,2.1,2.2,2.3,3,3.1,3.2,3.3,4,4.1,4.2,4.3,5,5.1,5.2,5.3,6,6.1,6.2,6.3,6.4,6.5,6.6,6.7,7,7.1,7.2,7.3,8,8.1,8.2,8.3,9,9.1,9.2,9.3,10,10.1,10.2,10.3,11,11.1,11.2,11.3); $trial = 0; $deg = "".sprintf("%c",0xb0); @n3k = NchooseK(3,3); foreach my $case (@case) { # do something for each frame $trial = $trial + 1; $TABLEoverride = 0; if( scalar (@list) <2){@list = (5,6,7,8,9,10,11,12,13,14,15); @list = @list [NchooseK(11,11)]; @list = (@list,@list[0,2,4,6,8,10,1,3,5,7,9]) } if( scalar (@listsd) <1){@listsd = (4,5,6,7,8,9); @listsd = @listsd [NchooseK(6,6)]; @listdd = (11,12,13,14,15,16); @listdd = @listdd [NchooseK(6,6)]; @listsd = (@listsd, @listsd,@listsd); @listdd = (@listdd,@listdd[1,2,3,4,5,0], @listdd[2,3,4,5,0,1]) } if( scalar (@AcuteList) <2){@AcuteList = (20,30,40,55,65,75); @AcuteList = @AcuteList [NchooseK(6,6)]; @AcuteList = (@AcuteList,@AcuteList[0,1,3,5,2,4])} if( scalar (@SmallAcuteList) <2){@SmallAcuteList = (10,15,20,25,30,35); @SmallAcuteList = @SmallAcuteList [NchooseK(6,6)]; @SmallAcuteList = (@SmallAcuteList,@SmallAcuteList[0,1,3,5,2,4])} if( scalar (@ObtuseList) <2){@ObtuseList = (110,130,140,155 ,115,135); @ObtuseList = @ObtuseList [NchooseK(6,6)]; @ObtuseList = (@ObtuseList,@ObtuseList[0,1,3,5,2,4])} @listSingleDigit = (4,5,6,7,8,9); @listDoubleDigit = (11,12,13,14,15,16); @n3k = @n3k[1,2,0]; if($trial/3 == int($trial/3)){@n3k = @n3k[0,2,1]} # Sets of labels vvvvvvvvvvvvvvvvvvvv @Angles = ("A","B","C","W","X","Y","X","Y","Z","I","J","K"); @Sides = ("a","b","c","w","x","y","x","y","z","i","j","k"); $tmpSTART = random(0,9,3); $AL = @Angles[$tmpSTART + 0]; $LL[$n3k[0]] = $AL; $BL = @Angles[$tmpSTART + 1]; $LL[$n3k[1]] = $BL; $CL = @Angles[$tmpSTART + 2]; $LL[$n3k[2]] = $CL; $aL = @Sides[$tmpSTART + 0]; $ll[$n3k[0]] = $aL; $bL = @Sides[$tmpSTART + 1]; $ll[$n3k[1]] = $bL; $cL = @Sides[$tmpSTART + 2]; $ll[$n3k[2]] = $cL; # Sets of labels ^^^^^^^^^^^^^^^^^^^ if ($case == 0){ ###LL90 find hyptoneuse only $x[1] = pop @list; $X[0] = 90; $x[2] = pop @list; $x[0] = sqrt($x[1]**2 + $x[2]**2 ); #the hypotenuse $X[1] = 180 / $PI * asin( $x[1] / $x[0] ); $X[2] = 180 - $X[0] - $X[1]; $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = ""; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = "= ". $x[2]; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $TABLEoverride = 1; $table .= AlignedRow(["The length of side $ll[0] is ",NAMED_ANS_RULE("answer".$trial,6)]); push @namedCmp , "answer".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= EndTable(); } if ($case == 0.1){ ###LL90 find hyptoneuse only small numbers $fact =0.001; $x[1] = pop @list; $X[0] = 90; $x[2] = pop @list; # the other leg $x[0] = sqrt($x[1]**2 + $x[2]**2 ); #the hypotenuse $X[1] = 180 / $PI * asin( $x[1] / $x[0] ); $X[2] = 180 - $X[0] - $X[1]; for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = ""; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = "= ". $x[2]; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow(["The length of side $ll[0] is ",NAMED_ANS_RULE("answer".$trial,6)]); push @namedCmp , "answer".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= EndTable(); } if ($case == 0.2){ ###LL90 find hyptoneuse only, large numbers $fact =list_random(100,1000); $x[1] = pop @list; $X[0] = 90; $x[2] = pop @list; # the other leg $x[0] = sqrt($x[1]**2 + $x[2]**2 ); #the hypotenuse $X[1] = 180 / $PI * asin( $x[1] / $x[0] ); $X[2] = 180 - $X[0] - $X[1]; for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = ""; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = "= ". $x[2]; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow(["The length of side $ll[0] is ",NAMED_ANS_RULE("answer".$trial,6)]); push @namedCmp , "answer".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= EndTable(); } if ($case == 0.3){ ###LL90 find hyptoneuse only, large numbers $fact = list_random(10**(-20), 10**(-15), 10**30, 10**40); $x[1] = pop @listsd; $X[0] = 90; $x[2] = pop @listdd; # the other leg $x[0] = sqrt($x[1]**2 + $x[2]**2 ); #the hypotenuse $X[1] = 180 / $PI * asin( $x[1] / $x[0] ); $X[2] = 180 - $X[0] - $X[1]; for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = ""; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = "= ". $x[2]; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow(["The length of side $ll[0] is ",NAMED_ANS_RULE("answer".$trial,6)]); push @namedCmp , "answer".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= EndTable(); } if ($case == 1){ ###HL90 missing side only $x[1] = pop @list; $X[0] = 90; $x[0] = random(int(1.2 * $x[1] + 1),int(5 * $x[1])); # the hypotenuse $X[1] = 180 / $PI * asin( $x[1] / $x[0] ); $X[2] = 180 - $X[0] - $X[1]; $x[2] = sqrt($x[0]**2 - $x[1]**2 ); $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow(["The length of side $ll[2] is ",NAMED_ANS_RULE("answer".$trial,6)]); push @namedCmp , "answer".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 1.1){ ###HL90 missing side only - small values $fact = list_random(0.01,0.001,0.0001); $x[1] = pop @list; $X[0] = 90; $x[0] = random(int(1.2 * $x[1] + 1),int(5 * $x[1])); # the hypotenuse $X[1] = 180 / $PI * asin( $x[1] / $x[0] ); $X[2] = 180 - $X[0] - $X[1]; $x[2] = sqrt($x[0]**2 - $x[1]**2 ); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow(["The length of side $ll[2] is ",NAMED_ANS_RULE("answer".$trial,6)]); push @namedCmp , "answer".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 1.2){ ###HL90 missing side only large values $fact = list_random(100,1000,10000); $x[1] = pop @list; $X[0] = 90; $x[0] = random(int(1.2 * $x[1] + 1),int(5 * $x[1])); # the hypotenuse $X[1] = 180 / $PI * asin( $x[1] / $x[0] ); $X[2] = 180 - $X[0] - $X[1]; $x[2] = sqrt($x[0]**2 - $x[1]**2 ); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $x[2] = sqrt($x[0]**2 - $x[1]**2 ); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow(["The length of side $ll[2] is ",NAMED_ANS_RULE("answer".$trial,6)]); push @namedCmp , "answer".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 1.3){ ###HL90 missing side only $fact = list_random(10**(-40), 10**(-16), 10**29, 10**41); $x[1] = pop @list; $X[0] = 90; $x[0] = random(int(1.2 * $x[1] + 1),int(5 * $x[1])); # the hypotenuse $X[1] = 180 / $PI * asin( $x[1] / $x[0] ); $X[2] = 180 - $X[0] - $X[1]; $x[2] = sqrt($x[0]**2 - $x[1]**2 ); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $x[2] = sqrt($x[0]**2 - $x[1]**2 ); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow(["The length of side $ll[2] is ",NAMED_ANS_RULE("answer".$trial,6)]); push @namedCmp , "answer".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 2){ ###LL90 solve $fact = 1; $x[1] = pop @list; $X[0] = 90; $x[2] = pop @list; # the other leg $x[0] = sqrt($x[1]**2 + $x[2]**2 ); #the hypotenuse $X[1] = 180 / $PI * asin( $x[1] / $x[0] ); $X[2] = 180 - $X[0] - $X[1]; for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = ""; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = "= ". $x[2]; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $ll[0] = ",NAMED_ANS_RULE("hyp".$trial,6)]); push @namedCmp , "hyp".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[1] = \)",NAMED_ANS_RULE("angle1".$trial,6),]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[2] = \)",NAMED_ANS_RULE("angle2".$trial,6),]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 2.1){ ###LL90 solve small sides $fact = list_random(0.01,0.001,0.0001); $x[1] = pop @list; $X[0] = 90; $x[2] = pop @list; # the other leg $x[0] = sqrt($x[1]**2 + $x[2]**2 ); #the hypotenuse $X[1] = 180 / $PI * asin( $x[1] / $x[0] ); $X[2] = 180 - $X[0] - $X[1]; for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = ""; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = "= ". $x[2]; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $ll[0] = ",NAMED_ANS_RULE("hyp".$trial,6)]); push @namedCmp , "hyp".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[1] = \)",NAMED_ANS_RULE("angle1".$trial,6),]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[2] = \)",NAMED_ANS_RULE("angle2".$trial,6),]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 2.2){ ###LL90 solve $fact = list_random(0.01,0.001,0.0001); $x[1] = pop @list; $X[0] = 90; $x[2] = pop @list; # the other leg $x[0] = sqrt($x[1]**2 + $x[2]**2 ); #the hypotenuse $X[1] = 180 / $PI * asin( $x[1] / $x[0] ); $X[2] = 180 - $X[0] - $X[1]; for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = ""; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = "= ". $x[2]; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $ll[0] = ",NAMED_ANS_RULE("hyp".$trial,6)]); push @namedCmp , "hyp".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[1] = \)",NAMED_ANS_RULE("angle1".$trial,6),]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[2] = \)",NAMED_ANS_RULE("angle2".$trial,6),]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 2.3){ ###LL90 solve scientific notation $fact = list_random(10**40,10**41,10**-20,10**-21); $x[1] = pop @listsd; $X[0] = 90; $x[2] = pop @listdd; # the other leg $x[0] = sqrt($x[1]**2 + $x[2]**2 ); #the hypotenuse $X[1] = 180 / $PI * asin( $x[1] / $x[0] ); $X[2] = 180 - $X[0] - $X[1]; for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = ""; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = "= ". $x[2]; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $ll[0] = ",NAMED_ANS_RULE("hyp".$trial,6)]); push @namedCmp , "hyp".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[1] = \)",NAMED_ANS_RULE("angle1".$trial,6),]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[2] = \)",NAMED_ANS_RULE("angle2".$trial,6),]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 3){ ###HL90 solve $fact = 1; $x[1] = pop @list; $X[0] = 90; $x[0] = random(int(1.2 * $x[1] + 1),int(5 * $x[1])); # the hypotenuse $X[1] = 180 / $PI * asin( $x[1] / $x[0] ); $X[2] = 180 - $X[0] - $X[1]; $x[2] = sqrt($x[0]**2 - $x[1]**2 ); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("hyp".$trial,6)]); push @namedCmp , "hyp".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[1] = \)",NAMED_ANS_RULE("angle1".$trial,6),]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[2] = \)",NAMED_ANS_RULE("angle2".$trial,6),]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 3.1){ ###HL90 solve $fact = list_random(0.001,0.0001,0.01); $x[1] = pop @list; $X[0] = 90; $x[0] = random(int(1.2 * $x[1] + 1),int(5 * $x[1])); # the hypotenuse $X[1] = 180 / $PI * asin( $x[1] / $x[0] ); $X[2] = 180 - $X[0] - $X[1]; $x[2] = sqrt($x[0]**2 - $x[1]**2 ); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("hyp".$trial,6)]); push @namedCmp , "hyp".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[1] = \)",NAMED_ANS_RULE("angle1".$trial,6),]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[2] = \)",NAMED_ANS_RULE("angle2".$trial,6),]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 3.2){ ###HL90 solve large angles $fact = list_random(100,1000,10000); $x[1] = pop @list; $X[0] = 90; $x[0] = random(int(1.2 * $x[1] + 1),int(5 * $x[1])); # the hypotenuse $X[1] = 180 / $PI * asin( $x[1] / $x[0] ); $X[2] = 180 - $X[0] - $X[1]; $x[2] = sqrt($x[0]**2 - $x[1]**2 ); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("hyp".$trial,6)]); push @namedCmp , "hyp".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[1] = \)",NAMED_ANS_RULE("angle1".$trial,6),]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[2] = \)",NAMED_ANS_RULE("angle2".$trial,6),]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 3.3){ ###HL90 solve scientific notation $fact = list_random(10**-30,10**-31,10**20,10**21); $x[1] = pop @listsd; $X[0] = 90; $x[0] = pop @listdd; # the hypotenuse $X[1] = 180 / $PI * asin( $x[1] / $x[0] ); $X[2] = 180 - $X[0] - $X[1]; $x[2] = sqrt($x[0]**2 - $x[1]**2 ); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("hyp".$trial,6)]); push @namedCmp , "hyp".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[1] = \)",NAMED_ANS_RULE("angle1".$trial,6),]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[2] = \)",NAMED_ANS_RULE("angle2".$trial,6),]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 4){ ###as90 $fact = 1; # given vvvvvvvvvvvvvvv $x[1] = pop @list; $X[0] = pop @AcuteList; $X[2] = 90; # given ^^^^^^^^^^^^^^^^^^^^^^ $X[1] = 180 - $X[0] - $X[2] ; $x[2] = $x[1] / sin ($PI / 180 * $X[1]); $x[0] = sin ($PI / 180 * $X[0]) * $x[1] / sin ($PI / 180 * $X[1]); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = "=".$X[2].$deg; $a = $x[$n3k[0]]; $given[0] = ""; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $ll[0] = ",NAMED_ANS_RULE("leg".$trial,6)]); push @namedCmp , "leg".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("hyp".$trial,6)]); push @namedCmp , "hyp".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[1] = \)",NAMED_ANS_RULE("angle1".$trial,6),]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= EndTable(); } if ($case == 4.1){ ###as90 small numbers $fact = list_random(0.01,0.001,0.001); # given vvvvvvvvvvvvvvv $x[1] = pop @list; $X[0] = pop @AcuteList; $X[2] = 90; # given ^^^^^^^^^^^^^^^^^^^^^^ $X[1] = 180 - $X[0] - $X[2] ; $x[2] = $x[1] / sin ($PI / 180 * $X[1]); $x[0] = sin ($PI / 180 * $X[0]) * $x[1] / sin ($PI / 180 * $X[1]); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = "=".$X[2].$deg; $a = $x[$n3k[0]]; $given[0] = ""; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $ll[0] = ",NAMED_ANS_RULE("leg".$trial,6)]); push @namedCmp , "leg".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("hyp".$trial,6)]); push @namedCmp , "hyp".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[1] = \)",NAMED_ANS_RULE("angle1".$trial,6),]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= EndTable(); } if ($case == 4.2){ ###as90 large numbers $fact = list_random(1000,10000,100); # given vvvvvvvvvvvvvvv $x[1] = pop @list; $X[0] = pop @AcuteList; $X[2] = 90; # given ^^^^^^^^^^^^^^^^^^^^^^ $X[1] = 180 - $X[0] - $X[2] ; $x[2] = $x[1] / sin ($PI / 180 * $X[1]); $x[0] = sin ($PI / 180 * $X[0]) * $x[1] / sin ($PI / 180 * $X[1]); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = "=".$X[2].$deg; $a = $x[$n3k[0]]; $given[0] = ""; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $ll[0] = ",NAMED_ANS_RULE("leg".$trial,6)]); push @namedCmp , "leg".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("hyp".$trial,6)]); push @namedCmp , "hyp".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[1] = \)",NAMED_ANS_RULE("angle1".$trial,6),]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= EndTable(); } if ($case == 4.3){ ###as90 scientific notation $fact = list_random(10**100,10**43,10**-39,10**-20); # given vvvvvvvvvvvvvvv $x[1] = pop @list; $X[0] = pop @AcuteList; $X[2] = 90; # given ^^^^^^^^^^^^^^^^^^^^^^ $X[1] = 180 - $X[0] - $X[2] ; $x[2] = $x[1] / sin ($PI / 180 * $X[1]); $x[0] = sin ($PI / 180 * $X[0]) * $x[1] / sin ($PI / 180 * $X[1]); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = "=".$X[2].$deg; $a = $x[$n3k[0]]; $given[0] = ""; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $ll[0] = ",NAMED_ANS_RULE("leg".$trial,6)]); push @namedCmp , "leg".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("hyp".$trial,6)]); push @namedCmp , "hyp".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[1] = \)",NAMED_ANS_RULE("angle1".$trial,6),]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= EndTable(); } if ($case == 5){ ###ah90 $fact = 1; # given vvvvvvvvvvvvvvv $x[1] = pop @list; $X[0] = pop @AcuteList; $X[1] = 90; # given ^^^^^^^^^^^^^^^^^^^^^^ $X[2] = 180 - $X[0] - $X[1] ; $x[2] = sin ($PI / 180 * $X[2]) * $x[1] ; $x[0] = sin ($PI / 180 * $X[0]) * $x[1] ; for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = " = ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = " = ".$X[1].$deg; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = ""; $b = $x[$n3k[1]]; $given[1] = " = ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $ll[0] = ",NAMED_ANS_RULE("leg".$trial,6)]); push @namedCmp , "leg".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("hyp".$trial,6)]); push @namedCmp , "hyp".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[2] = \)",NAMED_ANS_RULE("angle2".$trial,6),]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 5.1){ ###ah90 small numbers $fact = list_random(0.001,0.001,0.1); # given vvvvvvvvvvvvvvv $x[1] = pop @list; $X[0] = pop @AcuteList; $X[1] = 90; # given ^^^^^^^^^^^^^^^^^^^^^^ $X[2] = 180 - $X[0] - $X[1] ; $x[2] = sin ($PI / 180 * $X[2]) * $x[1] ; $x[0] = sin ($PI / 180 * $X[0]) * $x[1] ; for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = " = ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = " = ".$X[1].$deg; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = ""; $b = $x[$n3k[1]]; $given[1] = " = ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $ll[0] = ",NAMED_ANS_RULE("leg".$trial,6)]); push @namedCmp , "leg".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("hyp".$trial,6)]); push @namedCmp , "hyp".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[2] = \)",NAMED_ANS_RULE("angle2".$trial,6),]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 5.2){ ###ah90 -large numbers $fact = list_random(100,1000,10000); # given vvvvvvvvvvvvvvv $x[1] = pop @list; $X[0] = pop @AcuteList; $X[1] = 90; # given ^^^^^^^^^^^^^^^^^^^^^^ $X[2] = 180 - $X[0] - $X[1] ; $x[2] = sin ($PI / 180 * $X[2]) * $x[1] ; $x[0] = sin ($PI / 180 * $X[0]) * $x[1] ; for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = " = ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = " = ".$X[1].$deg; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = ""; $b = $x[$n3k[1]]; $given[1] = " = ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $ll[0] = ",NAMED_ANS_RULE("leg".$trial,6)]); push @namedCmp , "leg".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("hyp".$trial,6)]); push @namedCmp , "hyp".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[2] = \)",NAMED_ANS_RULE("angle2".$trial,6),]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 5.3){ ###ah90 -scientific notation $fact = list_random(10**45, 10**43,10**-20,10**-19); # given vvvvvvvvvvvvvvv $x[1] = pop @list; $X[0] = pop @AcuteList; $X[1] = 90; # given ^^^^^^^^^^^^^^^^^^^^^^ $X[2] = 180 - $X[0] - $X[1] ; $x[2] = sin ($PI / 180 * $X[2]) * $x[1] ; $x[0] = sin ($PI / 180 * $X[0]) * $x[1] ; for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = " = ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = " = ".$X[1].$deg; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = ""; $b = $x[$n3k[1]]; $given[1] = " = ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $ll[0] = ",NAMED_ANS_RULE("leg".$trial,6)]); push @namedCmp , "leg".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("hyp".$trial,6)]); push @namedCmp , "hyp".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= AlignedRow(["\( \angle $LL[2] = \)",NAMED_ANS_RULE("angle2".$trial,6),]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 6){ ###sss random largest angle $fact = 1; @printtest = @list; $x[0] = pop @list; $x[1] = pop @list; $x[2] = random( abs($x[0] - $x[1])+2, $x[0] + $x[1] - 2 ); #use cosine law to find angles $X[0] = (180/$PI)*acos (( $x[1]**2 + $x[2]**2- $x[0]**2)/(2*$x[1]*$x[2])); $X[1] = (180/$PI)*acos (( $x[0]**2 + $x[2]**2- $x[1]**2)/(2*$x[0]*$x[2])); $X[2] = 180 - $X[0] - $X[1] ; for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = ""; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] =" = ". $x[0]; $b = $x[$n3k[1]]; $given[1] = " = ". $x[1]; $c = $x[$n3k[2]]; $given[2] = " = ". $x[2]; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[0] = ",NAMED_ANS_RULE("angle0".$trial,6)]); push @namedCmp , "angle0".$trial=>num_cmp( $X[0], reltol=>3 ) ; $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $LL[2] = ",NAMED_ANS_RULE("angle2".$trial,6)]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 6.1){ ###sss random largest angle - small numbers $fact = list_random(0.01,0.001,0.0001); @printtest = @list; $x[0] = pop @list; $x[1] = pop @list; $x[2] = random( abs($x[0] - $x[1])+2, $x[0] + $x[1] - 2 ); #use cosine law to find angles $X[0] = (180/$PI)*acos (( $x[1]**2 + $x[2]**2- $x[0]**2)/(2*$x[1]*$x[2])); $X[1] = (180/$PI)*acos (( $x[0]**2 + $x[2]**2- $x[1]**2)/(2*$x[0]*$x[2])); $X[2] = 180 - $X[0] - $X[1] ; for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = ""; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] =" = ". $x[0]; $b = $x[$n3k[1]]; $given[1] = " = ". $x[1]; $c = $x[$n3k[2]]; $given[2] = " = ". $x[2]; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[0] = ",NAMED_ANS_RULE("angle0".$trial,6)]); push @namedCmp , "angle0".$trial=>num_cmp( $X[0], reltol=>3 ) ; $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $LL[2] = ",NAMED_ANS_RULE("angle2".$trial,6)]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 6.2){ ###sss random largest angle - large numbers $fact = list_random(100,10000,1000); @printtest = @list; $x[0] = pop @list; $x[1] = pop @list; $x[2] = random( abs($x[0] - $x[1])+2, $x[0] + $x[1] - 2 ); #use cosine law to find angles $X[0] = (180/$PI)*acos (( $x[1]**2 + $x[2]**2- $x[0]**2)/(2*$x[1]*$x[2])); $X[1] = (180/$PI)*acos (( $x[0]**2 + $x[2]**2- $x[1]**2)/(2*$x[0]*$x[2])); $X[2] = 180 - $X[0] - $X[1] ; for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = ""; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] =" = ". $x[0]; $b = $x[$n3k[1]]; $given[1] = " = ". $x[1]; $c = $x[$n3k[2]]; $given[2] = " = ". $x[2]; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[0] = ",NAMED_ANS_RULE("angle0".$trial,6)]); push @namedCmp , "angle0".$trial=>num_cmp( $X[0], reltol=>3 ) ; $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $LL[2] = ",NAMED_ANS_RULE("angle2".$trial,6)]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= EndTable();} if ($case == 6.3){ ###sss random largest angle - scientific notation $fact = list_random(10**40,10**41,10**-40,10**-41); @printtest = @list; $x[0] = pop @list; $x[1] = pop @list; $x[2] = random( abs($x[0] - $x[1])+2, $x[0] + $x[1] - 2 ); #use cosine law to find angles $X[0] = (180/$PI)*acos (( $x[1]**2 + $x[2]**2- $x[0]**2)/(2*$x[1]*$x[2])); $X[1] = (180/$PI)*acos (( $x[0]**2 + $x[2]**2- $x[1]**2)/(2*$x[0]*$x[2])); $X[2] = 180 - $X[0] - $X[1] ; + $A = $X[$n3k[0]]; $Given[0] = ""; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] =" = ". $x[0]; $b = $x[$n3k[1]]; $given[1] = " = ". $x[1]; $c = $x[$n3k[2]]; $given[2] = " = ". $x[2]; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[0] = ",NAMED_ANS_RULE("angle0".$trial,6)]); push @namedCmp , "angle0".$trial=>num_cmp( $X[0], reltol=>3 ) ; $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $LL[2] = ",NAMED_ANS_RULE("angle2".$trial,6)]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= EndTable();} if ($case == 6.4){ ###sss obtuse angle $fact = 1; $x[0] = pop @list; $x[1] = pop @list; #forcing longest side longer than would-be hypotenuse vvvvvvvvvvvvvvvvv $shortest = int (1.2 * sqrt ($x[0] **2 + $x[1]**2) +1); $longest = $x[0] + $x[1] -2; $x[2] = random ($shortest, $longest,1); #forcing longest side longer than would-be hypotenuse ^^^^^^^^^^^^^^^^^^ #use cosine law to find angles $X[0] = (180/$PI)*acos (( $x[1]**2 + $x[2]**2- $x[0]**2)/(2*$x[1]*$x[2])); $X[1] = (180/$PI)*acos (( $x[0]**2 + $x[2]**2- $x[1]**2)/(2*$x[0]*$x[2])); $X[2] = 180 - $X[0] - $X[1] ; for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = ""; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] =" = ". $x[0]; $b = $x[$n3k[1]]; $given[1] = " = ". $x[1]; $c = $x[$n3k[2]]; $given[2] = " = ". $x[2]; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[0] = ",NAMED_ANS_RULE("angle0".$trial,6)]); push @namedCmp , "angle0".$trial=>num_cmp( $X[0], reltol=>3 ) ; $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $LL[2] = ",NAMED_ANS_RULE("angle2".$trial,6)]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 6.5){ ###sss obtuse angle - small numbers $fact = list_random(0.01,0.1,0.001); $x[0] = pop @list; $x[1] = pop @list; #forcing longest side longer than would-be hypotenuse vvvvvvvvvvvvvvvvv $shortest = int (1.2 * sqrt ($x[0] **2 + $x[1]**2) +1); $longest = $x[0] + $x[1] -2; $x[2] = random ($shortest, $longest,1); #forcing longest side longer than would-be hypotenuse ^^^^^^^^^^^^^^^^^^ #use cosine law to find angles $X[0] = (180/$PI)*acos (( $x[1]**2 + $x[2]**2- $x[0]**2)/(2*$x[1]*$x[2])); $X[1] = (180/$PI)*acos (( $x[0]**2 + $x[2]**2- $x[1]**2)/(2*$x[0]*$x[2])); $X[2] = 180 - $X[0] - $X[1] ; for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = ""; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] =" = ". $x[0]; $b = $x[$n3k[1]]; $given[1] = " = ". $x[1]; $c = $x[$n3k[2]]; $given[2] = " = ". $x[2]; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[0] = ",NAMED_ANS_RULE("angle0".$trial,6)]); push @namedCmp , "angle0".$trial=>num_cmp( $X[0], reltol=>3 ) ; $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $LL[2] = ",NAMED_ANS_RULE("angle2".$trial,6)]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 6.6){ ###sss obtuse angle - large numbers $fact = list_random(100,1000,10000); $x[0] = pop @list; $x[1] = pop @list; #forcing longest side longer than would-be hypotenuse vvvvvvvvvvvvvvvvv $shortest = int (1.2 * sqrt ($x[0] **2 + $x[1]**2) +1); $longest = $x[0] + $x[1] -2; $x[2] = random ($shortest, $longest,1); #forcing longest side longer than would-be hypotenuse ^^^^^^^^^^^^^^^^^^ #use cosine law to find angles $X[0] = (180/$PI)*acos (( $x[1]**2 + $x[2]**2- $x[0]**2)/(2*$x[1]*$x[2])); $X[1] = (180/$PI)*acos (( $x[0]**2 + $x[2]**2- $x[1]**2)/(2*$x[0]*$x[2])); $X[2] = 180 - $X[0] - $X[1] ; for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = ""; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] =" = ". $x[0]; $b = $x[$n3k[1]]; $given[1] = " = ". $x[1]; $c = $x[$n3k[2]]; $given[2] = " = ". $x[2]; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[0] = ",NAMED_ANS_RULE("angle0".$trial,6)]); push @namedCmp , "angle0".$trial=>num_cmp( $X[0], reltol=>3 ) ; $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $LL[2] = ",NAMED_ANS_RULE("angle2".$trial,6)]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= EndTable();} if ($case == 6.7){ ###sss obtuse angle - scientific notation $fact = list_random(10**50,10**20,10**-23,10**-24); $x[0] = pop @list; $x[1] = pop @list; #forcing longest side longer than would-be hypotenuse vvvvvvvvvvvvvvvvv $shortest = int (1.2 * sqrt ($x[0] **2 + $x[1]**2) +1); $longest = $x[0] + $x[1] -2; $x[2] = random ($shortest, $longest,1); #forcing longest side longer than would-be hypotenuse ^^^^^^^^^^^^^^^^^^ #use cosine law to find angles $X[0] = (180/$PI)*acos (( $x[1]**2 + $x[2]**2- $x[0]**2)/(2*$x[1]*$x[2])); $X[1] = (180/$PI)*acos (( $x[0]**2 + $x[2]**2- $x[1]**2)/(2*$x[0]*$x[2])); $X[2] = 180 - $X[0] - $X[1] ; for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = ""; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] =" = ". $x[0]; $b = $x[$n3k[1]]; $given[1] = " = ". $x[1]; $c = $x[$n3k[2]]; $given[2] = " = ". $x[2]; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[0] = ",NAMED_ANS_RULE("angle0".$trial,6)]); push @namedCmp , "angle0".$trial=>num_cmp( $X[0], reltol=>3 ) ; $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $LL[2] = ",NAMED_ANS_RULE("angle2".$trial,6)]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= EndTable();} if ($case == 7){ ###sas acute angle#vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv $fact = 1; $x[0] = pop @list; $x[1] = pop @list; $X[2] = pop @AcuteList; $x[2] = sqrt ($x[0]**2 + $x[1]**2 - 2 * $x[0] * $x[1] * cos($PI / 180 * $X[2])); #use cosine law to find angles $X[0] = (180/$PI)*acos (( $x[1]**2 + $x[2]**2 - $x[0]**2)/(2*$x[1]*$x[2])); $X[1] = (180/$PI)*acos (( $x[0]**2 + $x[2]**2 - $x[1]**2)/(2*$x[0]*$x[2])); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = ""; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = "=". $X[2].$deg; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[0] = ",NAMED_ANS_RULE("angle0".$trial,6)]); push @namedCmp , "angle0".$trial=>num_cmp( $X[0], reltol=>3 ) ; $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("side2".$trial,6)]); push @namedCmp , "side2".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } #^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if ($case == 7.1){ ###sas acute angle#vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv $fact = list_random(0.01,0.1,0.001); $x[0] = pop @list; $x[1] = pop @list; $X[2] = pop @AcuteList; $x[2] = sqrt ($x[0]**2 + $x[1]**2 - 2 * $x[0] * $x[1] * cos($PI / 180 * $X[2])); #use cosine law to find angles $X[0] = (180/$PI)*acos (( $x[1]**2 + $x[2]**2 - $x[0]**2)/(2*$x[1]*$x[2])); $X[1] = (180/$PI)*acos (( $x[0]**2 + $x[2]**2 - $x[1]**2)/(2*$x[0]*$x[2])); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = ""; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = "=". $X[2].$deg; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[0] = ",NAMED_ANS_RULE("angle0".$trial,6)]); push @namedCmp , "angle0".$trial=>num_cmp( $X[0], reltol=>3 ) ; $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("side2".$trial,6)]); push @namedCmp , "side2".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } #^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if ($case == 7.2){ ###sas acute angle#vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv $fact = list_random(1000,100,10000); $x[0] = pop @list; $x[1] = pop @list; $X[2] = pop @AcuteList; $x[2] = sqrt ($x[0]**2 + $x[1]**2 - 2 * $x[0] * $x[1] * cos($PI / 180 * $X[2])); #use cosine law to find angles $X[0] = (180/$PI)*acos (( $x[1]**2 + $x[2]**2 - $x[0]**2)/(2*$x[1]*$x[2])); $X[1] = (180/$PI)*acos (( $x[0]**2 + $x[2]**2 - $x[1]**2)/(2*$x[0]*$x[2])); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = ""; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = "=". $X[2].$deg; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[0] = ",NAMED_ANS_RULE("angle0".$trial,6)]); push @namedCmp , "angle0".$trial=>num_cmp( $X[0], reltol=>3 ) ; $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("side2".$trial,6)]); push @namedCmp , "side2".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } #^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if ($case == 7.3){ ###sas acute angle#vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv $fact = list_random(10**20,10**40,10**21,10**-20,10**-30,10**-31); $x[0] = pop @list; $x[1] = pop @list; $X[2] = pop @AcuteList; $x[2] = sqrt ($x[0]**2 + $x[1]**2 - 2 * $x[0] * $x[1] * cos($PI / 180 * $X[2])); #use cosine law to find angles $X[0] = (180/$PI)*acos (( $x[1]**2 + $x[2]**2 - $x[0]**2)/(2*$x[1]*$x[2])); $X[1] = (180/$PI)*acos (( $x[0]**2 + $x[2]**2 - $x[1]**2)/(2*$x[0]*$x[2])); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = ""; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = "=". $X[2].$deg; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[0] = ",NAMED_ANS_RULE("angle0".$trial,6)]); push @namedCmp , "angle0".$trial=>num_cmp( $X[0], reltol=>3 ) ; $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("side2".$trial,6)]); push @namedCmp , "side2".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } #^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if ($case == 8){ ###sas obtuse ###vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv $fact = 1; $x[0] = pop @list; $x[1] = pop @list; $X[2] = pop @ObtuseList; $x[2] = sqrt ($x[0]**2 + $x[1]**2 - 2 * $x[0] * $x[1] * cos($PI / 180 * $X[2])); #use cosine law to find angles $X[0] = (180/$PI)*acos (( $x[1]**2 + $x[2]**2 - $x[0]**2)/(2*$x[1]*$x[2])); $X[1] = (180/$PI)*acos (( $x[0]**2 + $x[2]**2 - $x[1]**2)/(2*$x[0]*$x[2])); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = ""; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = "= ". $X[2].$deg; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[0] = ",NAMED_ANS_RULE("angle0".$trial,6)]); push @namedCmp , "angle0".$trial=>num_cmp( $X[0], reltol=>3 ) ; $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("side2".$trial,6)]); push @namedCmp , "side2".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if ($case == 8.1){ ###sas obtuse ###vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv $fact = list_random(0.1,0.01,0.001); $x[0] = pop @list; $x[1] = pop @list; $X[2] = pop @ObtuseList; $x[2] = sqrt ($x[0]**2 + $x[1]**2 - 2 * $x[0] * $x[1] * cos($PI / 180 * $X[2])); #use cosine law to find angles $X[0] = (180/$PI)*acos (( $x[1]**2 + $x[2]**2 - $x[0]**2)/(2*$x[1]*$x[2])); $X[1] = (180/$PI)*acos (( $x[0]**2 + $x[2]**2 - $x[1]**2)/(2*$x[0]*$x[2])); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = ""; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = "= ". $X[2].$deg; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[0] = ",NAMED_ANS_RULE("angle0".$trial,6)]); push @namedCmp , "angle0".$trial=>num_cmp( $X[0], reltol=>3 ) ; $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("side2".$trial,6)]); push @namedCmp , "side2".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if ($case == 8.2){ ###sas obtuse ###vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv $fact = list_random(100,1000,10000); $x[0] = pop @list; $x[1] = pop @list; $X[2] = pop @ObtuseList; $x[2] = sqrt ($x[0]**2 + $x[1]**2 - 2 * $x[0] * $x[1] * cos($PI / 180 * $X[2])); #use cosine law to find angles $X[0] = (180/$PI)*acos (( $x[1]**2 + $x[2]**2 - $x[0]**2)/(2*$x[1]*$x[2])); $X[1] = (180/$PI)*acos (( $x[0]**2 + $x[2]**2 - $x[1]**2)/(2*$x[0]*$x[2])); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = ""; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = "= ". $X[2].$deg; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[0] = ",NAMED_ANS_RULE("angle0".$trial,6)]); push @namedCmp , "angle0".$trial=>num_cmp( $X[0], reltol=>3 ) ; $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("side2".$trial,6)]); push @namedCmp , "side2".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if ($case == 8.3){ ###sas obtuse ###vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv $fact = list_random(10**40,10**90,10**-30,10**-35); $x[0] = pop @list; $x[1] = pop @list; $X[2] = pop @ObtuseList; $x[2] = sqrt ($x[0]**2 + $x[1]**2 - 2 * $x[0] * $x[1] * cos($PI / 180 * $X[2])); #use cosine law to find angles $X[0] = (180/$PI)*acos (( $x[1]**2 + $x[2]**2 - $x[0]**2)/(2*$x[1]*$x[2])); $X[1] = (180/$PI)*acos (( $x[0]**2 + $x[2]**2 - $x[1]**2)/(2*$x[0]*$x[2])); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = ""; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = "= ". $X[2].$deg; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[0] = ",NAMED_ANS_RULE("angle0".$trial,6)]); push @namedCmp , "angle0".$trial=>num_cmp( $X[0], reltol=>3 ) ; $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("side2".$trial,6)]); push @namedCmp , "side2".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } # ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if ($case == 9){ ###ass acute $fact = 1; $x[1] = pop @list; $X[0] = pop @SmallAcuteList; # for the other given side vvvvvvvvvvv $minLength = int( 1.1 *$x[1]* sin ($PI / 180 * $X[0]) + 1); $maxLength = int(0.7 * $x[1]); $x[0] = random ($minLength, $maxLength); #for the other given side ^^^^^^^^^^^^ $X[1] = 180 / $PI * asin(sin ($PI / 180 * $X[0]) / $x[0] * $x[1]); $X[2] = 180 - $X[0] - $X[1]; $x[2] = sqrt($x[0]**2 + $x[1]**2 - 2 * $x[0]*$x[1] * cos($PI / 180 * $X[2])); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = "(acute)"; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $LL[2] = ",NAMED_ANS_RULE("angle2".$trial,6)]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("side2".$trial,6)]); push @namedCmp , "side2".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 9.1){ ###ass acute $fact = list_random(0.1,.001,.0001); $x[1] = pop @list; $X[0] = pop @SmallAcuteList; # for the other given side vvvvvvvvvvv $minLength = int( 1.1 *$x[1]* sin ($PI / 180 * $X[0]) + 1); $maxLength = int(0.7 * $x[1]); $x[0] = random ($minLength, $maxLength); #for the other given side ^^^^^^^^^^^^ $X[1] = 180 / $PI * asin(sin ($PI / 180 * $X[0]) / $x[0] * $x[1]); $X[2] = 180 - $X[0] - $X[1]; $x[2] = sqrt($x[0]**2 + $x[1]**2 - 2 * $x[0]*$x[1] * cos($PI / 180 * $X[2])); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = "(acute)"; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $LL[2] = ",NAMED_ANS_RULE("angle2".$trial,6)]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("side2".$trial,6)]); push @namedCmp , "side2".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 9.2){ ###ass acute $fact = list_random(1000,10,100); $x[1] = pop @list; $X[0] = pop @SmallAcuteList; # for the other given side vvvvvvvvvvv $minLength = int( 1.1 *$x[1]* sin ($PI / 180 * $X[0]) + 1); $maxLength = int(0.7 * $x[1]); $x[0] = random ($minLength, $maxLength); #for the other given side ^^^^^^^^^^^^ $X[1] = 180 / $PI * asin(sin ($PI / 180 * $X[0]) / $x[0] * $x[1]); $X[2] = 180 - $X[0] - $X[1]; $x[2] = sqrt($x[0]**2 + $x[1]**2 - 2 * $x[0]*$x[1] * cos($PI / 180 * $X[2])); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = "(acute)"; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $LL[2] = ",NAMED_ANS_RULE("angle2".$trial,6)]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("side2".$trial,6)]); push @namedCmp , "side2".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 9.3){ ###ass acute $fact = list_random(10**40,10**41,10**-30,10**-40); $x[1] = pop @list; $X[0] = pop @SmallAcuteList; # for the other given side vvvvvvvvvvv $minLength = int( 1.1 *$x[1]* sin ($PI / 180 * $X[0]) + 1); $maxLength = int(0.7 * $x[1]); $x[0] = random ($minLength, $maxLength); #for the other given side ^^^^^^^^^^^^ $X[1] = 180 / $PI * asin(sin ($PI / 180 * $X[0]) / $x[0] * $x[1]); $X[2] = 180 - $X[0] - $X[1]; $x[2] = sqrt($x[0]**2 + $x[1]**2 - 2 * $x[0]*$x[1] * cos($PI / 180 * $X[2])); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = "(acute)"; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $LL[2] = ",NAMED_ANS_RULE("angle2".$trial,6)]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("side2".$trial,6)]); push @namedCmp , "side2".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 10){ ###ass obtuse $fact = 1; $x[1] = pop @list; $X[0] = pop @SmallAcuteList; # for the other given side vvvvvvvvvvv $minLength = int( 1.1 *$x[1]* sin ($PI / 180 * $X[0]) + 1); $maxLength = int(0.7 * $x[1]); $x[0] = random ($minLength, $maxLength); #for the other given side ^^^^^^^^^^^^ $X[1] = 180 - (180 / $PI) * asin(sin ($PI / 180 * $X[0]) / $x[0] * $x[1]); $X[2] = 180 - $X[0] - $X[1]; $x[2] = sqrt($x[0]**2 + $x[1]**2 - 2 * $x[0]*$x[1] * cos($PI / 180 * $X[2])); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = "(obtuse)"; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $LL[2] = ",NAMED_ANS_RULE("angle2".$trial,6)]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("side2".$trial,6)]); push @namedCmp , "side2".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 10.1){ ###ass obtuse small sides $fact = list_random(0.1,0.01,0.001); $x[1] = pop @list; $X[0] = pop @SmallAcuteList; # for the other given side vvvvvvvvvvv $minLength = int( 1.1 *$x[1]* sin ($PI / 180 * $X[0]) + 1); $maxLength = int(0.7 * $x[1]); $x[0] = random ($minLength, $maxLength); #for the other given side ^^^^^^^^^^^^ $X[1] = 180 - (180 / $PI) * asin(sin ($PI / 180 * $X[0]) / $x[0] * $x[1]); $X[2] = 180 - $X[0] - $X[1]; $x[2] = sqrt($x[0]**2 + $x[1]**2 - 2 * $x[0]*$x[1] * cos($PI / 180 * $X[2])); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = "(obtuse)"; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $LL[2] = ",NAMED_ANS_RULE("angle2".$trial,6)]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("side2".$trial,6)]); push @namedCmp , "side2".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 10.2){ ###ass obtuse $fact = list_random(1000,100,10000); $x[1] = pop @list; $X[0] = pop @SmallAcuteList; # for the other given side vvvvvvvvvvv $minLength = int( 1.1 *$x[1]* sin ($PI / 180 * $X[0]) + 1); $maxLength = int(0.7 * $x[1]); $x[0] = random ($minLength, $maxLength); #for the other given side ^^^^^^^^^^^^ $X[1] = 180 - (180 / $PI) * asin(sin ($PI / 180 * $X[0]) / $x[0] * $x[1]); $X[2] = 180 - $X[0] - $X[1]; $x[2] = sqrt($x[0]**2 + $x[1]**2 - 2 * $x[0]*$x[1] * cos($PI / 180 * $X[2])); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = "(obtuse)"; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $LL[2] = ",NAMED_ANS_RULE("angle2".$trial,6)]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("side2".$trial,6)]); push @namedCmp , "side2".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 10.3){ ###ass obtuse $fact = list_random(10**40,10**50,10**-90,10**-81); $x[1] = pop @list; $X[0] = pop @SmallAcuteList; # for the other given side vvvvvvvvvvv $minLength = int( 1.1 *$x[1]* sin ($PI / 180 * $X[0]) + 1); $maxLength = int(0.7 * $x[1]); $x[0] = random ($minLength, $maxLength); #for the other given side ^^^^^^^^^^^^ $X[1] = 180 - (180 / $PI) * asin(sin ($PI / 180 * $X[0]) / $x[0] * $x[1]); $X[2] = 180 - $X[0] - $X[1]; $x[2] = sqrt($x[0]**2 + $x[1]**2 - 2 * $x[0]*$x[1] * cos($PI / 180 * $X[2])); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = "(obtuse)"; $C = $X[$n3k[2]]; $Given[2] = ""; $a = $x[$n3k[0]]; $given[0] = "= ". $x[0]; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $LL[2] = ",NAMED_ANS_RULE("angle2".$trial,6)]); push @namedCmp , "angle2".$trial=>num_cmp( $X[2], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("side2".$trial,6)]); push @namedCmp , "side2".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 11){ ###asa $fact = 1; # given vvvvvvvvvvvvvvv $x[1] = pop @list; $X[0] = pop @SmallAcuteList; $X[2] = random(30,160 - $X[0],5); # given ^^^^^^^^^^^^^^^^^^^^^^ $X[1] = 180 - $X[0] - $X[2] ; $x[2] = sin ($PI / 180 * $X[2]) * $x[1] / sin ($PI / 180 * $X[1]); $x[0] = sin ($PI / 180 * $X[0]) * $x[1] / sin ($PI / 180 * $X[1]); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = "=".$X[2].$deg; $a = $x[$n3k[0]]; $given[0] = ""; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $ll[0] = ",NAMED_ANS_RULE("side0".$trial,6)]); push @namedCmp , "side0".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("side2".$trial,6)]); push @namedCmp , "side2".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 11.1){ ###asa $fact = list_random(0.01,0.001,0.0001); # given vvvvvvvvvvvvvvv $x[1] = pop @list; $X[0] = pop @SmallAcuteList; $X[2] = random(30,160 - $X[0],5); # given ^^^^^^^^^^^^^^^^^^^^^^ $X[1] = 180 - $X[0] - $X[2] ; $x[2] = sin ($PI / 180 * $X[2]) * $x[1] / sin ($PI / 180 * $X[1]); $x[0] = sin ($PI / 180 * $X[0]) * $x[1] / sin ($PI / 180 * $X[1]); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = "=".$X[2].$deg; $a = $x[$n3k[0]]; $given[0] = ""; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $ll[0] = ",NAMED_ANS_RULE("side0".$trial,6)]); push @namedCmp , "side0".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("side2".$trial,6)]); push @namedCmp , "side2".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 11.2){ ###asa $fact = list_random(100,1000,10000); # given vvvvvvvvvvvvvvv $x[1] = pop @list; $X[0] = pop @SmallAcuteList; $X[2] = random(30,160 - $X[0],5); # given ^^^^^^^^^^^^^^^^^^^^^^ $X[1] = 180 - $X[0] - $X[2] ; $x[2] = sin ($PI / 180 * $X[2]) * $x[1] / sin ($PI / 180 * $X[1]); $x[0] = sin ($PI / 180 * $X[0]) * $x[1] / sin ($PI / 180 * $X[1]); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = "=".$X[2].$deg; $a = $x[$n3k[0]]; $given[0] = ""; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $ll[0] = ",NAMED_ANS_RULE("side0".$trial,6)]); push @namedCmp , "side0".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("side2".$trial,6)]); push @namedCmp , "side2".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } if ($case == 11.3){ ###asa $fact = list_random(10**50,10**51,10**-50,10**-51); # given vvvvvvvvvvvvvvv $x[1] = pop @list; $X[0] = pop @SmallAcuteList; $X[2] = random(30,160 - $X[0],5); # given ^^^^^^^^^^^^^^^^^^^^^^ $X[1] = 180 - $X[0] - $X[2] ; $x[2] = sin ($PI / 180 * $X[2]) * $x[1] / sin ($PI / 180 * $X[1]); $x[0] = sin ($PI / 180 * $X[0]) * $x[1] / sin ($PI / 180 * $X[1]); for ($i = 0; $i <3; $i++) {$x[$i] *= $fact} $A = $X[$n3k[0]]; $Given[0] = "= ". $X[0].$deg; $B = $X[$n3k[1]]; $Given[1] = ""; $C = $X[$n3k[2]]; $Given[2] = "=".$X[2].$deg; $a = $x[$n3k[0]]; $given[0] = ""; $b = $x[$n3k[1]]; $given[1] = "= ". $x[1]; $c = $x[$n3k[2]]; $given[2] = ""; $Alabel = $AL.$Given[$n3k[0]]; $Blabel = $BL.$Given[$n3k[1]]; $Clabel = $CL.$Given[$n3k[2]]; $alabel = $aL.$given[$n3k[0]]; $blabel = $bL.$given[$n3k[1]]; $clabel = $cL.$given[$n3k[2]]; ##Constructing the data table vvvvvvvvvvvvvvvvvvvvvvvvvvvvv $table = BeginTable(spacing => 3); $table .= AlignedRow([" $LL[1] = ",NAMED_ANS_RULE("angle1".$trial,6)]); push @namedCmp , "angle1".$trial=>num_cmp( $X[1], reltol=>3 ) ; $table .= AlignedRow([" $ll[0] = ",NAMED_ANS_RULE("side0".$trial,6)]); push @namedCmp , "side0".$trial=>num_cmp( $x[0], reltol=>3 ) ; $table .= AlignedRow([" $ll[2] = ",NAMED_ANS_RULE("side2".$trial,6)]); push @namedCmp , "side2".$trial=>num_cmp( $x[2], reltol=>3 ) ; $table .= EndTable(); } $AX = $b * cos ($PI * $C / 180); $AY = $b * sin ($PI * $C / 180); $dimX = max (max ($a, $a - $AX), $AX); $dimY = $AY ; $size = 1.5 * max ($dimX, $dimY); $marginX = 0.5 * ($size - $dimX); $marginY = 0.5 * ($size - $AY); $xmin = min(0,$AX ) - $marginX; $xmax = $size + $xmin; $ymin = -1 * $marginY; $ymax = $size - $marginY; $xPixels = 600; $yPixels = 600; $pic = init_graph($xmin,$ymin,$xmax,$ymax,'pixels'=>[$xPixels,$yPixels]); $lab=new Label(0,0,$Clabel,'black','top','center'); $pic->lb($lab); $lab=new Label($AX,$AY,$Alabel,'black','bottom','left'); $pic->lb($lab); $lab=new Label($a,0,$Blabel); $pic->lb($lab); $lab=new Label($a/2,0,$alabel,'black','center','top'); $pic->lb($lab); $lab=new Label($AX/2- abs(0.03 *$a),$AY/2,$blabel,'black','right','bottom'); $pic->lb($lab); $lab=new Label(($AX + $a) / 2 + abs(0.03 *$a), $AY /2 ,$clabel, 'black','left','bottom'); $pic->lb($lab); $pic->new_color("lightblue", 214,230,244); $pic->moveTo(0,0); $pic->lineTo($AX,$AY,1); $pic->lineTo($a,0,1); $pic->lineTo(0,0,1); $pic->fillRegion([($a / 2 + $AX)/2,$AY/2,'lightblue']); BEGIN_TEXT $HR $HR Number $trial $BR \{ image(insertGraph($pic), width=>$xPixels, height=>$yPixels) \} $PAR $table END_TEXT NAMED_ANS(@namedCmp); } TEXT($END_ONE_COLUMN); ENDDOCUMENT();