Raising Powers (Example Code)

Jim Wright jimwright at yosemiteconsultants.com
Thu Dec 4 03:53:14 CET 2003


I had a difficult time understand GMP powers and found the manual to be of
no help. I finally figured them out

And have decided to post my code if anyone would like to look at it. Hope
you find it useful. The reason I am

Using GMP for powers is because of C's integer, double, etc limitations.

 

/* Program to raise powers using gmp library

   Option to write to file and option to write to screen    

   Written by Daniel Amaya - 12/04/03 */

 

/* Include Files */

 

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

#include <gmp.h>

 

/* File Pointer */

FILE *fptr;

 

/* Clears Screen, Duh */

void ClearScreen(void)

{

      int cls = 0;

 

      while (cls < 25)

      { printf("\n");

            cls++; }

      return;

}

 

main()

{

      mpz_t result, base; // Sets these as GMP Integers

      unsigned long int exponent; // Set exponent as an unsigned long
integer

      char answer; 

      fptr = fopen("output2.txt", "w+"); // Sets fptr to File output2.txt
with write capability

      

      /* Initializes base and result */

      mpz_init(base);

      mpz_init(result);

            

      /* Asks user for base and puts input into GMP Integer base */

      gmp_printf("Please Enter a Base \n");

      gmp_scanf("%Zd", base);

      

      /* Asks user for exponent and puts input into unsigned long int
exponent */

      gmp_printf("Please Enter a Exponent \n");

      gmp_scanf("%ld", &exponent);

 

      /* GMPS Power function, raises base ^ exponent and puts the answer
into GMP integer result */

      mpz_pow_ui(result, base, exponent);

 

      /* Asks user if they want output to screen or file. Getchar gets the
input and than assigns it into variable answer */

      printf("Would you like this outputted to a file? Y/N\n");

      getchar();

      answer = getchar();

      

      /* uses gmp file print function and outputs to output2.txt if user
entered Y/y. If user enters N/n uses gmp printf function and outputs to
screen */

      if ((answer == 'Y') || (answer == 'y'))

            { gmp_fprintf(fptr, "%Zd\n", result); }

      if ((answer == 'N') || (answer == 'n')) {

            ClearScreen();

            gmp_printf("%Zd\n", result); }            

 

      /* Clears base and result */

      mpz_clear(base);

      mpz_clear(result); 

      

 

      /* If you don't get this.. STOP PROGRAMMING NOW */

      return 0; }

 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: /list-archives/gmp-discuss/attachments/20031204/a0897480/attachment.htm


More information about the gmp-discuss mailing list