XeBuZer0

Padovan's secuence in C (Direct)

Dec 21st, 2019 (edited)
643
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.89 KB | None | 0 0
  1. // ** // ** // ** // ** // ** // ** // ** // ** // ** // ** // ** // ** // ** // ** // ** // ** //
  2. // ** // ** // ** // Código fuente de programa que calcula el n-ésimo término // ** // ** // ** //
  3. // ** // ** // ** // ** //  de la secuencia de Padovan (directo)  // ** // ** // ** // ** // ** //
  4. // ** // ** // ** // * Licenciado bajo GNU General Public License (GPL) 3.0 * // ** // ** // ** //
  5. // ** // ** // ** // ** // ** // ** // ** // ** // ** // ** // ** // ** // ** // ** // ** // ** //
  6. /* ** // ** // ** // ** // ** //  * F v q _ U k r a N a z i s ! * // ** // ** // ** // ** // ** */
  7. /* ** // ** // ** // ** // ** // ** // ** // ** // ** // ** // ** // ** // ** // ** // ** // ** */
  8.  
  9. #include <math.h>
  10. #include <errno.h>
  11. #include <stdio.h>
  12. #include <tgmath.h>
  13. #include <stdlib.h>
  14. #include <string.h>
  15. #include <complex.h>    /* Standard Library of Complex Numbers */
  16. #define Ro                                          cbrtl((1.0/2.0) + ((1.0/6.0)*(sqrtl(23.0/3.0)))) +                                         cbrtl((1.0/2.0) - ((1.0/6.0)*(sqrtl(23.0/3.0))))
  17. #define Ro1 (-1.0 * (1.0/2.0) + I*sqrt(3.0)/2.0 ) * cbrtl((1.0/2.0) + ((1.0/6.0)*(sqrtl(23.0/3.0)))) + (-1.0 * (1.0/2.0) - I*sqrt(3.0)/2.0 ) * cbrtl((1.0/2.0) - ((1.0/6.0)*(sqrtl(23.0/3.0))))
  18. #define Ro2 (-1.0 * (1.0/2.0) - I*sqrt(3.0)/2.0 ) * cbrtl((1.0/2.0) + ((1.0/6.0)*(sqrtl(23.0/3.0)))) + (-1.0 * (1.0/2.0) + I*sqrt(3.0)/2.0 ) * cbrtl((1.0/2.0) - ((1.0/6.0)*(sqrtl(23.0/3.0))))
  19.  
  20. long double PadoDire(long double n);
  21.  
  22. void main (void){
  23.     long double x;
  24.     printf("Ingrese término a calcular la relación\n");
  25.     printf("de recurrencia de proporción plástica: ");
  26.     scanf("%Lf",&x);
  27.     if (0<=x) printf("El resultado con %4.0Lf es: %4.0Lf\n", x, PadoDire(x+4));
  28. }
  29.  
  30. long double PadoDire(long double n){
  31.     if (0<n) return creal(cpowl(Ro,n)/(3*cpowl(Ro,2) - 1) + cpowl(Ro1,n)/(3*cpowl(Ro1,2) - 1) + cpowl(Ro2,n)/(3*cpowl(Ro2,2) - 1));
  32. }
Add Comment
Please, Sign In to add comment