1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* unused */ 2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* crypto/bn/bnspeed.c */ 4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * All rights reserved. 6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This package is an SSL implementation written 8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * by Eric Young (eay@cryptsoft.com). 9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The implementation was written so as to conform with Netscapes SSL. 10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This library is free for commercial and non-commercial use as long as 12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the following conditions are aheared to. The following conditions 13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * apply to all code found in this distribution, be it the RC4, RSA, 14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * lhash, DES, etc., code; not just the SSL code. The SSL documentation 15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * included with this distribution is covered by the same copyright terms 16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * except that the holder is Tim Hudson (tjh@cryptsoft.com). 17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Copyright remains Eric Young's, and as such any Copyright notices in 19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the code are not to be removed. 20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * If this package is used in a product, Eric Young should be given attribution 21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * as the author of the parts of the library used. 22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This can be in the form of a textual message at program startup or 23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * in documentation (online or textual) provided with the package. 24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Redistribution and use in source and binary forms, with or without 26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * modification, are permitted provided that the following conditions 27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * are met: 28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1. Redistributions of source code must retain the copyright 29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * notice, this list of conditions and the following disclaimer. 30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * notice, this list of conditions and the following disclaimer in the 32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * documentation and/or other materials provided with the distribution. 33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 3. All advertising materials mentioning features or use of this software 34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * must display the following acknowledgement: 35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * "This product includes cryptographic software written by 36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Eric Young (eay@cryptsoft.com)" 37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The word 'cryptographic' can be left out if the rouines from the library 38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * being used are not cryptographic related :-). 39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 4. If you include any Windows specific code (or a derivative thereof) from 40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the apps directory (application code) you must include an acknowledgement: 41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * SUCH DAMAGE. 54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The licence and distribution terms for any publically available version or 56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * derivative of this code cannot be changed. i.e. this code cannot simply be 57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * copied and put under another distribution licence 58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * [including the GNU Public Licence.] 59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */ 60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* most of this code has been pilfered from my libdes speed.c program */ 62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define BASENUM 1000000 64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef PROG 65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define PROG bnspeed_main 66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <stdio.h> 68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <stdlib.h> 69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <signal.h> 70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <string.h> 71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/crypto.h> 72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/err.h> 73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if !defined(OPENSSL_SYS_MSDOS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) && !defined(OPENSSL_SYS_MACOSX) 75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define TIMES 76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef _IRIX 79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <time.h> 80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef TIMES 82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <sys/types.h> 83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <sys/times.h> 84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Depending on the VMS version, the tms structure is perhaps defined. 87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project The __TMS macro will show if it was. If it wasn't defined, we should 88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project undefine TIMES, since that tells the rest of the program how things 89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project should be handled. -- Richard Levitte */ 90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS) 91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef TIMES 92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef TIMES 95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <sys/timeb.h> 96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(sun) || defined(__ultrix) 99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define _POSIX_SOURCE 100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <limits.h> 101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <sys/param.h> 102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/bn.h> 105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/x509.h> 106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The following if from times(3) man page. It may need to be changed */ 108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef HZ 109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# ifndef CLK_TCK 110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# ifndef _BSD_CLK_TCK_ /* FreeBSD hack */ 111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define HZ 100.0 112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# else /* _BSD_CLK_TCK_ */ 113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define HZ ((double)_BSD_CLK_TCK_) 114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# endif 115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# else /* CLK_TCK */ 116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# define HZ ((double)CLK_TCK) 117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# endif 118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef BUFSIZE 121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define BUFSIZE ((long)1024*8) 122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint run=0; 123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic double Time_F(int s); 125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define START 0 126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STOP 1 127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic double Time_F(int s) 129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project double ret; 131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef TIMES 132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project static struct tms tstart,tend; 133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project if (s == START) 135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project times(&tstart); 137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project return(0); 138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project else 140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project times(&tend); 142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ret=((double)(tend.tms_utime-tstart.tms_utime))/HZ; 143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project return((ret < 1e-3)?1e-3:ret); 144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else /* !times() */ 146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project static struct timeb tstart,tend; 147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project long i; 148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project if (s == START) 150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ftime(&tstart); 152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project return(0); 153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project else 155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ftime(&tend); 157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project i=(long)tend.millitm-(long)tstart.millitm; 158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ret=((double)(tend.time-tstart.time))+((double)i)/1000.0; 159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project return((ret < 0.001)?0.001:ret); 160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif 162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define NUM_SIZES 5 165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectstatic int sizes[NUM_SIZES]={128,256,512,1024,2048}; 166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/*static int sizes[NUM_SIZES]={59,179,299,419,539}; */ 167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid do_mul(BIGNUM *r,BIGNUM *a,BIGNUM *b,BN_CTX *ctx); 169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint main(int argc, char **argv) 171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BN_CTX *ctx; 173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BIGNUM a,b,c; 174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project ctx=BN_CTX_new(); 176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BN_init(&a); 177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BN_init(&b); 178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BN_init(&c); 179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project do_mul(&a,&b,&c,ctx); 181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectvoid do_mul(BIGNUM *r, BIGNUM *a, BIGNUM *b, BN_CTX *ctx) 184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project int i,j,k; 186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project double tm; 187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project long num; 188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project for (i=0; i<NUM_SIZES; i++) 190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project num=BASENUM; 192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project if (i) num/=(i*3); 193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BN_rand(a,sizes[i],1,0); 194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project for (j=i; j<NUM_SIZES; j++) 195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BN_rand(b,sizes[j],1,0); 197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Time_F(START); 198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project for (k=0; k<num; k++) 199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BN_mul(r,b,a,ctx); 200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project tm=Time_F(STOP); 201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project printf("mul %4d x %4d -> %8.3fms\n",sizes[i],sizes[j],tm*1000.0/num); 202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project for (i=0; i<NUM_SIZES; i++) 206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project num=BASENUM; 208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project if (i) num/=(i*3); 209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BN_rand(a,sizes[i],1,0); 210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Time_F(START); 211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project for (k=0; k<num; k++) 212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BN_sqr(r,a,ctx); 213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project tm=Time_F(STOP); 214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project printf("sqr %4d x %4d -> %8.3fms\n",sizes[i],sizes[i],tm*1000.0/num); 215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project for (i=0; i<NUM_SIZES; i++) 218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project num=BASENUM/10; 220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project if (i) num/=(i*3); 221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BN_rand(a,sizes[i]-1,1,0); 222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project for (j=i; j<NUM_SIZES; j++) 223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project { 224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BN_rand(b,sizes[j],1,0); 225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project Time_F(START); 226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project for (k=0; k<100000; k++) 227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project BN_div(r, NULL, b, a,ctx); 228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project tm=Time_F(STOP); 229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project printf("div %4d / %4d -> %8.3fms\n",sizes[j],sizes[i]-1,tm*1000.0/num); 230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project } 233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project 234