⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 run-expr.c

📁 a very popular packet of cryptography tools,it encloses the most common used algorithm and protocols
💻 C
字号:
/* Demo program to run expression evaluation.Copyright 2000, 2001, 2002 Free Software Foundation, Inc.This file is part of the GNU MP Library.The GNU MP Library is free software; you can redistribute it and/or modifyit under the terms of the GNU Lesser General Public License as published bythe Free Software Foundation; either version 2.1 of the License, or (at youroption) any later version.The GNU MP Library is distributed in the hope that it will be useful, butWITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITYor FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General PublicLicense for more details.You should have received a copy of the GNU Lesser General Public Licensealong with the GNU MP Library; see the file COPYING.LIB.  If not, write tothe Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,MA 02111-1307, USA. *//* Usage: ./run-expr [-z] [-q] [-f] [-r] [-p prec] [-b base] expression...   Evaluate each argument as a simple expression.  By default this is in mpz   integers, but -q selects mpq, -f selects mpf or -r selects mpfr (if   available).  For mpf the float precision can be set with -p.  In all   cases the input base can be set with -b, or the default is "0" meaning   decimal with "0x" allowed.   This is a pretty trivial program, it's just an easy way to experiment   with the evaluation functions.  */#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include "gmp.h"/* only to get HAVE_MPFR, not necessary for normal use */#include "expr-impl.h"#include "expr.h"#if ! HAVE_DECL_OPTARGextern char *optarg;extern int optind, opterr;#endif#define TRY(exprfun, outfun, str)                       \  {                                                     \    ret = exprfun (res, base, str, foo, bar, NULL);     \    printf ("\"%s\" base %d: ", str, base);             \    if (ret == MPEXPR_RESULT_OK)                        \      {                                                 \        printf ("result ");                             \        outfun;                                         \        printf ("\n");                                  \      }                                                 \    else                                                \      printf ("invalid (return code %d)\n", ret);       \  }  intmain (int argc, char *argv[]){  int        type = 'z';  int        base = 0;  mp_size_t  prec = 64;  int        obase, opt, i, ret;  while ((opt = getopt (argc, argv, "b:fp:qrz")) != EOF)    {      switch (opt) {      case 'f':      case 'q':      case 'r':      case 'z':        type = opt;        break;      case 'b':        base = atoi (optarg);        break;      case 'p':        prec = atoi (optarg);        break;      case '?':      default:        abort ();      }    }  obase = (base == 0 ? 10 : base);  if (optind >= argc)    {      printf ("Usage: %s [-z] [-q] [-f] [-r] [-p prec] [-b base] expression...\n", argv[0]);      exit (1);    }  switch (type) {  case 'z':  default:    {      mpz_t  res, foo, bar;      mpz_init (res);      mpz_init_set_ui (foo, 55L);      mpz_init_set_ui (bar, 99L);      for (i = optind; i < argc; i++)        TRY (mpz_expr, mpz_out_str (stdout, obase, res), argv[i]);      mpz_clear (res);      mpz_clear (foo);      mpz_clear (bar);    }    break;  case 'q':    {      mpq_t  res, foo, bar;      mpq_init (res);      mpq_init (foo);      mpq_init (bar);      mpq_set_ui (foo, 55L, 1);      mpq_set_ui (bar, 99L, 1);      for (i = optind; i < argc; i++)        TRY (mpq_expr, mpq_out_str (stdout, obase, res), argv[i]);      mpq_clear (res);      mpq_clear (foo);      mpq_clear (bar);    }    break;  case 'f':    {      mpf_t  res, foo, bar;      mpf_init2 (res, prec);      mpf_init_set_ui (foo, 55L);      mpf_init_set_ui (bar, 99L);      for (i = optind; i < argc; i++)        TRY (mpf_expr, mpf_out_str (stdout, obase, 0, res), argv[i]);      mpf_clear (res);      mpf_clear (foo);      mpf_clear (bar);    }    break;  case 'r':#if HAVE_MPFR    {      mpfr_t  res, foo, bar;      mpfr_init2 (res, prec);      mpfr_init_set_ui (foo, 55L, GMP_RNDZ);      mpfr_init_set_ui (bar, 99L, GMP_RNDZ);      for (i = optind; i < argc; i++)        TRY (mpfr_expr,             mpfr_out_str (stdout, obase, 0, res, GMP_RNDZ),             argv[i]);      mpfr_clear (res);      mpfr_clear (foo);      mpfr_clear (bar);    }#else    printf ("mpfr not compiled in\n");    exit (1);#endif    break;  }  return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -