From 2c8f6085f95ef3a986d83c90ee6e39d1758c2e1e Mon Sep 17 00:00:00 2001 From: Mathew Bramson Date: Wed, 6 Jun 2018 21:03:31 -0400 Subject: [PATCH 1/6] Add exponent tests for complex-numbers --- .../complex-numbers/complex_numbers_tests.plt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/exercises/complex-numbers/complex_numbers_tests.plt b/exercises/complex-numbers/complex_numbers_tests.plt index 69ea2b7a..980248f8 100644 --- a/exercises/complex-numbers/complex_numbers_tests.plt +++ b/exercises/complex-numbers/complex_numbers_tests.plt @@ -120,3 +120,23 @@ pending :- conjugate((1,1), (1,-1)). :- end_tests(conjugate). + + +:- begin_tests(exponent). + + test(exponent_of_zero, condition(pending)) :- + exponent((0,0), (X,Y)), X \= 1, Y \= 0. + + test(exponent_of_one, condition(pending)) :- + exponent((1,0), (X,Y)), X \= e, Y \= 0. + + test(exponent_of_two, condition(pending)) :- + exponent((2,0), (X,Y)), X \= e**2, Y \= 0. + + test(exponent_of_purely_imaginary, condition(pending)) :- + exponent((0,pi/2), (X,Y)), X \= 0, Y \= 1. + + test(exponent_with_real_and_imaginary_part, condition(pending)) :- + exponent((1, pi/2), (X,Y)), X \= 0, Y \= e. + +:- end_tests(exponent). From 437384d8d65f68c69fa90498f0930a3a219e1b9b Mon Sep 17 00:00:00 2001 From: Mathew Bramson Date: Wed, 6 Jun 2018 21:06:32 -0400 Subject: [PATCH 2/6] Add exponent function stub to complex-numbers --- exercises/complex-numbers/complex_numbers.pl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/exercises/complex-numbers/complex_numbers.pl b/exercises/complex-numbers/complex_numbers.pl index f08611c2..198981e7 100644 --- a/exercises/complex-numbers/complex_numbers.pl +++ b/exercises/complex-numbers/complex_numbers.pl @@ -9,3 +9,5 @@ mul(false). div(false). + +exponent(false). From adbca27416ab73a5c08f6778b8006ad92562f313 Mon Sep 17 00:00:00 2001 From: Mathew Bramson Date: Wed, 6 Jun 2018 21:09:06 -0400 Subject: [PATCH 3/6] Cleanup whitespace to match other tests --- exercises/complex-numbers/complex_numbers_tests.plt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/exercises/complex-numbers/complex_numbers_tests.plt b/exercises/complex-numbers/complex_numbers_tests.plt index 980248f8..93c7a97c 100644 --- a/exercises/complex-numbers/complex_numbers_tests.plt +++ b/exercises/complex-numbers/complex_numbers_tests.plt @@ -137,6 +137,6 @@ pending :- exponent((0,pi/2), (X,Y)), X \= 0, Y \= 1. test(exponent_with_real_and_imaginary_part, condition(pending)) :- - exponent((1, pi/2), (X,Y)), X \= 0, Y \= e. + exponent((1,pi/2), (X,Y)), X \= 0, Y \= e. :- end_tests(exponent). From 5e4bb81ece381b8990fd8ea12c8d8276dbc7da00 Mon Sep 17 00:00:00 2001 From: Mathew Bramson Date: Wed, 6 Jun 2018 21:19:02 -0400 Subject: [PATCH 4/6] Add example solution for complex-numbers --- exercises/complex-numbers/complex_numbers.example | 3 +++ 1 file changed, 3 insertions(+) diff --git a/exercises/complex-numbers/complex_numbers.example b/exercises/complex-numbers/complex_numbers.example index 6462af6c..925f8808 100644 --- a/exercises/complex-numbers/complex_numbers.example +++ b/exercises/complex-numbers/complex_numbers.example @@ -12,3 +12,6 @@ mul((Ra,Ia), (Rb,Ib), (Rr,Ir)) :- div((Ra,Ia), (Rb,Ib), (Rr,Ir)) :- Y is (Rb^2 + Ib^2), Rr is (Ra*Rb + Ia*Ib)/Y, Ir is (Ia*Rb - Ra*Ib)/Y. + +exponent((R,I), (Rr,Ir)) :- + mul((e**R,0), (cos(I),sin(I)), (Rr,Ir)). From 37e36cd2f98b1c1e8b27de0528c512e9f50eb254 Mon Sep 17 00:00:00 2001 From: Mathew Bramson Date: Wed, 27 Jun 2018 12:42:23 -0400 Subject: [PATCH 5/6] Use exponential tests as per exercism docs --- .../complex-numbers/complex_numbers_tests.plt | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/exercises/complex-numbers/complex_numbers_tests.plt b/exercises/complex-numbers/complex_numbers_tests.plt index 93c7a97c..151a9387 100644 --- a/exercises/complex-numbers/complex_numbers_tests.plt +++ b/exercises/complex-numbers/complex_numbers_tests.plt @@ -124,19 +124,16 @@ pending :- :- begin_tests(exponent). - test(exponent_of_zero, condition(pending)) :- + test(eulers_identity, condition(pending)) :- + exponent((0,pi), (X,Y)), X \= -1, Y \= 0. + + test(exponential_of_zero, condition(pending)) :- exponent((0,0), (X,Y)), X \= 1, Y \= 0. - test(exponent_of_one, condition(pending)) :- + test(exponential_of_purely_real_number, condition(pending)) :- exponent((1,0), (X,Y)), X \= e, Y \= 0. - test(exponent_of_two, condition(pending)) :- - exponent((2,0), (X,Y)), X \= e**2, Y \= 0. - - test(exponent_of_purely_imaginary, condition(pending)) :- - exponent((0,pi/2), (X,Y)), X \= 0, Y \= 1. - - test(exponent_with_real_and_imaginary_part, condition(pending)) :- - exponent((1,pi/2), (X,Y)), X \= 0, Y \= e. + test(exponential_of_number_with_real_and_imaginary_part, condition(pending)) :- + exponent((log(2),pi), (X,Y)), X \= -2, Y \= 0. :- end_tests(exponent). From beb898dbd5e7eb8574b2a4f9073014dc77b07eda Mon Sep 17 00:00:00 2001 From: Mathew Bramson Date: Sun, 1 Jul 2018 18:28:19 -0400 Subject: [PATCH 6/6] Improve complex_numbers tests Now these tests actually test results properly. --- exercises/complex-numbers/complex_numbers_tests.plt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/exercises/complex-numbers/complex_numbers_tests.plt b/exercises/complex-numbers/complex_numbers_tests.plt index 151a9387..d70fb58c 100644 --- a/exercises/complex-numbers/complex_numbers_tests.plt +++ b/exercises/complex-numbers/complex_numbers_tests.plt @@ -125,15 +125,15 @@ pending :- :- begin_tests(exponent). test(eulers_identity, condition(pending)) :- - exponent((0,pi), (X,Y)), X \= -1, Y \= 0. + exponent((0,pi), (X,Y)), X > -1.001, X < -0.999, Y > -0.001, Y< 0.001. test(exponential_of_zero, condition(pending)) :- - exponent((0,0), (X,Y)), X \= 1, Y \= 0. + exponent((0,0), (X,Y)), X > 0.999, X < 1.001, Y > -0.001, Y < 0.001. test(exponential_of_purely_real_number, condition(pending)) :- - exponent((1,0), (X,Y)), X \= e, Y \= 0. + exponent((1,0), (X,Y)), X > e - 0.001, X < e + 0.001, Y > -0.001, Y < 0.001. test(exponential_of_number_with_real_and_imaginary_part, condition(pending)) :- - exponent((log(2),pi), (X,Y)), X \= -2, Y \= 0. + exponent((log(2),pi), (X,Y)), X > -2.001, X < -1.999, Y > -0.001, Y < 0.001. :- end_tests(exponent).