Advertisement
Guest User

Quadratic equations with CO

a guest
Aug 27th, 2016
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.87 KB | None | 0 0
  1. // This code was generated by colang 0.1-SNAPSHOT
  2. // Check out https://github.com/psenchanka/colang
  3.  
  4. // Original CO source:
  5. // double abs(double x) {
  6. //     if (x >= 0.0) return x else return -x
  7. // }
  8. //
  9. // double sqr(double x) {
  10. //     return x * x
  11. // }
  12. //
  13. // double EPS = 1.0e-9
  14. //
  15. // //If we have no sqrt(), we can just write our own :)
  16. // double sqrt(double x) {
  17. //     double r = 10.0
  18. //
  19. //     while (abs(r * r - x) > EPS) {
  20. //         r = r - (sqr(r) - x) / (2.0 * r)
  21. //     }
  22. //
  23. //     return r
  24. // }
  25. //
  26. // void main() {
  27. //     double a, b, c
  28. //     read(a)
  29. //     read(b)
  30. //     read(c)
  31. //
  32. //     double det = sqr(b) - 4.0 * a * c
  33. //     if (det < 0.0) {
  34. //         //Can't print strings yet :(
  35. //         println(-1)
  36. //         return
  37. //     }
  38. //
  39. //     double r1 = (-b - sqrt(det)) / (2.0 * a)
  40. //     double r2 = (-b + sqrt(det)) / (2.0 * a)
  41. //
  42. //     println(r1)
  43. //     println(r2)
  44. // }
  45.  
  46. #include <stdlib.h>
  47. #include <stdio.h>
  48. #include <math.h>
  49.  
  50. #define _not(a) (!(a))
  51. #define _neg(a) (-(a))
  52. #define _mul(a, b) ((a) * (b))
  53. #define _div(a, b) ((a) / (b))
  54. #define _add(a, b) ((a) + (b))
  55. #define _sub(a, b) ((a) - (b))
  56. #define _lt(a, b) ((a) < (b))
  57. #define _gt(a, b) ((a) > (b))
  58. #define _ltEq(a, b) ((a) <= (b))
  59. #define _gtEq(a, b) ((a) >= (b))
  60. #define _eq(a, b) ((a) == (b))
  61. #define _neq(a, b) ((a) != (b))
  62. #define _and(a, b) ((a) && (b))
  63. #define _or(a, b) ((a) || (b))
  64. #define _assign(a, b) ((a) = (b))
  65. #define _readInt(a) scanf("%d", &(a))
  66. #define _readDbl(a) scanf("%lf", &(a))
  67. #define _writeIntLn(a) printf("%d\n", a)
  68. #define _writeDblLn(a) printf("%lf\n", a)
  69.  
  70. double co_EPS;
  71.  
  72. double co_abs(double co_x);
  73. double co_sqr(double co_x_2);
  74. double co_sqrt(double co_x_3);
  75. void co_main();
  76.  
  77. double co_abs(double co_x) {
  78.     if (_gtEq(co_x, 0.0)) {
  79.         return co_x;
  80.     } else {
  81.         return _neg(co_x);
  82.     }
  83. }
  84. double co_sqr(double co_x_2) {
  85.     return _mul(co_x_2, co_x_2);
  86. }
  87. double co_sqrt(double co_x_3) {
  88.     double co_r;
  89.  
  90.     _assign(co_r, 10.0);
  91.     while (_gt(co_abs(_sub(_mul(co_r, co_r), co_x_3)), co_EPS)) {
  92.         {
  93.             _assign(co_r, _sub(co_r, _div(_sub(co_sqr(co_r), co_x_3), _mul(2.0, co_r))));
  94.         }
  95.     }
  96.     return co_r;
  97. }
  98. void co_main() {
  99.     double co_a;
  100.     double co_b;
  101.     double co_c;
  102.     double co_det;
  103.     double co_r1;
  104.     double co_r2;
  105.  
  106.     _assign(co_EPS, 1.0E-9);
  107.     _readDbl(co_a);
  108.     _readDbl(co_b);
  109.     _readDbl(co_c);
  110.     _assign(co_det, _sub(co_sqr(co_b), _mul(_mul(4.0, co_a), co_c)));
  111.     if (_lt(co_det, 0.0)) {
  112.         {
  113.             _writeIntLn(-1);
  114.             return ;
  115.         }
  116.     }
  117.     _assign(co_r1, _div(_sub(_neg(co_b), co_sqrt(co_det)), _mul(2.0, co_a)));
  118.     _assign(co_r2, _div(_add(_neg(co_b), co_sqrt(co_det)), _mul(2.0, co_a)));
  119.     _writeDblLn(co_r1);
  120.     _writeDblLn(co_r2);
  121. }
  122.  
  123. int main() {
  124.     co_main();
  125.     return 0;
  126. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement