diff --git a/sheet3/1/HISTORY.txt b/sheet3/1/HISTORY.txt deleted file mode 100644 index 496fca6..0000000 --- a/sheet3/1/HISTORY.txt +++ /dev/null @@ -1,152 +0,0 @@ -------------------------------------------------------------------------- - -Revisions as of Thu, Jan 17, 2013 3:50:01 PM - -Version 5.10 of stream.c has been released. -This version includes improved validation code and will automatically -use 64-bit array indices on 64-bit systems to allow very large arrays. - -------------------------------------------------------------------------- - -Revisions as of Thu Feb 19 08:16:57 CST 2009 - -Note that the codes in the "Versions" subdirectory should be -considered obsolete -- the versions of stream.c and stream.f -in this main directory include the OpenMP directives and structure -for creating "TUNED" versions. - -Only the MPI version in the "Versions" subdirectory should be -of any interest, and I have not recently checked that version for -errors or compliance with the current versions of stream.c and -stream.f. - -I added a simple Makefile to this directory. It works under Cygwin -on my Windows XP box (using gcc and g77). - -A user suggested a sneaky trick for "mysecond.c" -- instead of using -the #ifdef UNDERSCORE to generate the function name that the Fortran -compiler expects, the new version simply defines both "mysecond()" -and "mysecond_()", so it should automagically link with most Fortran -compilers. - -------------------------------------------------------------------------- - -Revisions as of Wed Nov 17 09:15:37 CST 2004 - -The most recent "official" versions have been renamed "stream.f" and -"stream.c" -- all other versions have been moved to the "Versions" -subdirectory. - -The "official" timer (was "second_wall.c") has been renamed "mysecond.c". -This is embedded in the C version ("stream.c"), but still needs to be -externally linked to the FORTRAN version ("stream.f"). - -------------------------------------------------------------------------- - -Revisions as of Tue May 27 11:51:23 CDT 2003 - -Copyright and License info added to stream_d.f, stream_mpi.f, and -stream_tuned.f - - -------------------------------------------------------------------------- - -Revisions as of Tue Apr 8 10:26:48 CDT 2003 - -I changed the name of the timer interface from "second" to "mysecond" -and removed the dummy argument in all versions of the source code (but -not the "Contrib" versions). - - -------------------------------------------------------------------------- - -Revisions as of Mon Feb 25 06:48:14 CST 2002 - -Added an OpenMP version of stream_d.c, called stream_d_omp.c. This is -still not up to date with the Fortran version, which includes error -checking and advanced data flow to prevent overoptimization, but it is -a good start.... - - -------------------------------------------------------------------------- - -Revisions as of Tue Jun 4 16:31:31 EDT 1996 - -I have fixed an "off-by-one" error in the RMS time calculation in -stream_d.f. This was already corrected in stream_d.c. No results are -invalidated, since I use minimum time instead of RMS time anyway.... - -------------------------------------------------------------------------- - -Revisions as of Fri Dec 8 14:49:56 EST 1995 - -I have renamed the timer routines to: - second_cpu.c - second_wall.c - second_cpu.f - -All have a function interface named 'second' which returns a double -precision floating point number. It should be possible to link -second_wall.c with stream_d.f without too much trouble, though the -details will depend on your environment. - -If anyone builds versions of these timers for machines running the -Macintosh O/S or DOS/Windows, I would appreciate getting a copy. - -To clarify: - * For single-user machines, the wallclock timer is preferred. - * For parallel machines, the wallclock timer is required. - * For time-shared systems, the cpu timer is more reliable, - though less accurate. - - -------------------------------------------------------------------------- - -Revisions as of Wed Oct 25 09:40:32 EDT 1995 - -(1) NOTICE to C users: - - stream_d.c has been updated to version 4.0 (beta), and - should be functionally identical to stream_d.f - - Two timers are provided --- second_cpu.c and second_wall.c - second_cpu.c measures cpu time, while second_wall.c measures - elapsed (real) time. - - For single-user machines, the wallclock timer is preferred. - For parallel machines, the wallclock timer is required. - For time-shared systems, the cpu timer is more reliable, - though less accurate. - -(2) cstream.c has been removed -- use stream_d.c - -(3) stream_wall.f has been removed --- to do parallel aggregate - bandwidth runs, comment out the definition of FUNCTION SECOND - in stream_d.f and compile/link with second_wall.c - -(4) stream_offset has been deprecated. It is still here - and usable, but stream_d.f is the "standard" version. - There are easy hooks in stream_d.f to change the - array offsets if you want to. - -(5) The rules of the game are clarified as follows: - - The reference case uses array sizes of 2,000,000 elements - and no additional offsets. I would like to see results - for this case. - - But, you are free to use any array size and any offset - you want, provided that the arrays are each bigger than - the last-level of cache. The output will show me what - parameters you chose. - - I expect that I will report just the best number, but - if there is a serious discrepancy between the reference - case and the "best" case, I reserve the right to report - both. - - Of course, I also reserve the right to reject any results - that I do not trust.... --- -John D. McCalpin, Ph.D. -john@mccalpin.com diff --git a/sheet3/1/HISTORY.txt:Zone.Identifier b/sheet3/1/HISTORY.txt:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/sheet3/1/LICENSE.txt b/sheet3/1/LICENSE.txt deleted file mode 100644 index cf1c8e0..0000000 --- a/sheet3/1/LICENSE.txt +++ /dev/null @@ -1,34 +0,0 @@ -*======================================================================= -*----------------------------------------------------------------------- -* Copyright 1991-2003: John D. McCalpin -*----------------------------------------------------------------------- -* License: -* 1. You are free to use this program and/or to redistribute -* this program. -* 2. You are free to modify this program for your own use, -* including commercial use, subject to the publication -* restrictions in item 3. -* 3. You are free to publish results obtained from running this -* program, or from works that you derive from this program, -* with the following limitations: -* 3a. In order to be referred to as "STREAM benchmark results", -* published results must be in conformance to the STREAM -* Run Rules, (briefly reviewed below) published at -* http://www.cs.virginia.edu/stream/ref.html -* and incorporated herein by reference. -* As the copyright holder, John McCalpin retains the -* right to determine conformity with the Run Rules. -* 3b. Results based on modified source code or on runs not in -* accordance with the STREAM Run Rules must be clearly -* labelled whenever they are published. Examples of -* proper labelling include: -* "tuned STREAM benchmark results" -* "based on a variant of the STREAM benchmark code" -* Other comparable, clear and reasonable labelling is -* acceptable. -* 3c. Submission of results to the STREAM benchmark web site -* is encouraged, but not required. -* 4. Use of this program or creation of derived works based on this -* program constitutes acceptance of these licensing restrictions. -* 5. Absolutely no warranty is expressed or implied. -*----------------------------------------------------------------------- diff --git a/sheet3/1/LICENSE.txt:Zone.Identifier b/sheet3/1/LICENSE.txt:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/sheet3/1/Makefile b/sheet3/1/Makefile deleted file mode 100644 index d6fa443..0000000 --- a/sheet3/1/Makefile +++ /dev/null @@ -1,44 +0,0 @@ -CC = gcc -CFLAGS = -O3 -DIMENSIONS = -DSTREAM_ARRAY_SIZE=80000000 -DNTIMES=20 - -FF = gfortran -FFLAGS = -O3 - -all: stream_f.exe stream_c.exe flops.exe - -stream_f.exe: stream.f mysecond.o - $(CC) $(CFLAGS) -c mysecond.c - $(FF) $(FFLAGS) $(DIMENSIONS) -c stream.f - $(FF) $(FFLAGS) stream.o mysecond.o -o stream_f.exe - -stream_c.exe: stream.c - $(CC) $(CFLAGS) $(DIMENSIONS) stream.c -o stream_c.exe - -clean: - rm -f *.exe *.o - -# an example of a more complex build line for the Intel icc compiler -stream.icc: stream.c - icc -O3 -xCORE-AVX2 -ffreestanding -qopenmp -DSTREAM_ARRAY_SIZE=80000000 -DNTIMES=20 stream.c -o stream.omp.AVX2.80M.20x.icc - -# GH -flops.exe: - $(CC) $(CFLAGS) -DUNIX flops.c -o flops.exe - -run: clean all - ./stream_c.exe - ./flops.exe - -MY_DIR = `basename ${PWD}` -tar: clean - @cd .. ;\ - tar cf ${MY_DIR}.tar ${MY_DIR} *default.mk ;\ - cd ${MY_DIR} - - -zip: clean - @cd .. ;\ - zip -r ${MY_DIR}.zip ${MY_DIR} *default.mk;\ - cd ${MY_DIR} -# HG diff --git a/sheet3/1/Makefile:Zone.Identifier b/sheet3/1/Makefile:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/sheet3/1/READ.ME b/sheet3/1/READ.ME deleted file mode 100644 index 175a3f0..0000000 --- a/sheet3/1/READ.ME +++ /dev/null @@ -1,110 +0,0 @@ -=============================================== - -STREAM is the de facto industry standard benchmark -for measuring sustained memory bandwidth. - -Documentation for STREAM is on the web at: - http://www.cs.virginia.edu/stream/ref.html - -=============================================== -NEWS -=============================================== -UPDATE: October 28 2014: - -"stream_mpi.c" released in the Versions directory. - -Based on Version 5.10 of stream.c, stream_mpi.c -brings the following new features: -* MPI implementation that *distributes* the arrays - across all MPI ranks. (The older Fortran version - of STREAM in MPI *replicates* the arrays across - all MPI ranks.) -* Data is allocated using "posix_memalign" - rather than using static arrays. Different - compiler flags may be needed for both portability - and optimization. - See the READ.ME file in the Versions directory - for more details. -* Error checking and timing done by all ranks and - gathered by rank 0 for processing and output. -* Timing code uses barriers to ensure correct - operation even when multiple MPI ranks run on - shared memory systems. - -NOTE: MPI is not a preferred implementation for - STREAM, which is intended to measure memory - bandwidth in shared-memory systems. In stream_mpi, - the MPI calls are only used to properly synchronize - the timers (using MPI_Barrier) and to gather - timing and error data, so the performance should - scale linearly with the size of the cluster. - But it may be useful, and was an interesting - exercise to develop and debug. - -=============================================== -UPDATE: January 17 2013: - -Version 5.10 of stream.c is finally available! - -There are no changes to what is being measured, but -a number of long-awaited improvements have been made: - -* Updated validation code does not suffer from - accumulated roundoff error for large arrays. -* Defining the preprocessor variable "VERBOSE" - when compiling will (1) cause the code to print the - measured average relative absolute error (rather than - simply printing "Solution Validates", and (2) print - the first 10 array entries with relative error exceeding - the error tolerance. -* Array index variables have been upgraded from - "int" to "ssize_t" to allow arrays with more - than 2 billion elements on 64-bit systems. -* Substantial improvements to the comments in - the source on how to configure/compile/run the - benchmark. -* The proprocessor variable controlling the array - size has been changed from "N" to "STREAM_ARRAY_SIZE". -* A new preprocessor variable "STREAM_TYPE" can be - used to override the data type from the default - "double" to "float". - This mechanism could also be used to change to - non-floating-point types, but several "printf" - statements would need to have their formats changed - to accomodate the modified data type. -* Some small changes in output, including printing - array sizes is GiB as well as MiB. -* Change to the default output format to print fewer - decimals for the bandwidth and more decimals for - the min/max/avg execution times. - - -=============================================== -UPDATE: February 19 2009: - -The most recent "official" versions have been renamed -"stream.f" and "stream.c" -- all other versions have -been moved to the "Versions" subdirectory and should be -considered obsolete. - -The "official" timer (was "second_wall.c") has been -renamed "mysecond.c". This is embedded in the C version -("stream.c"), but still needs to be externally linked to -the FORTRAN version ("stream.f"). The new version defines -entry points both with and without trailing underscores, -so it *should* link automagically with any Fortran compiler. - -=============================================== - -STREAM is a project of "Dr. Bandwidth": - John D. McCalpin, Ph.D. - john@mccalpin.com - -=============================================== - -The STREAM web and ftp sites are currently hosted at -the Department of Computer Science at the University of -Virginia under the generous sponsorship of Professor Bill -Wulf and Professor Alan Batson. - -=============================================== diff --git a/sheet3/1/READ.ME:Zone.Identifier b/sheet3/1/READ.ME:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/sheet3/1/flops.c b/sheet3/1/flops.c deleted file mode 100644 index 10325c1..0000000 --- a/sheet3/1/flops.c +++ /dev/null @@ -1,1156 +0,0 @@ -/* gcc -O3 -DUNIX -funroll-all-loops -o flops flops.c */ -/* ./flops */ - -/*--------------------- Start flops.c source code ----------------------*/ - -/*****************************/ -/* flops.c */ -/* Version 2.0, 18 Dec 1992 */ -/* Al Aburto */ -/* aburto@nosc.mil */ -/*****************************/ - -/* - Flops.c is a 'c' program which attempts to estimate your systems - floating-point 'MFLOPS' rating for the FADD, FSUB, FMUL, and FDIV - operations based on specific 'instruction mixes' (discussed below). - The program provides an estimate of PEAK MFLOPS performance by making - maximal use of register variables with minimal interaction with main - memory. The execution loops are all small so that they will fit in - any cache. Flops.c can be used along with Linpack and the Livermore - kernels (which exersize memory much more extensively) to gain further - insight into the limits of system performance. The flops.c execution - modules also include various percent weightings of FDIV's (from 0% to - 25% FDIV's) so that the range of performance can be obtained when - using FDIV's. FDIV's, being computationally more intensive than - FADD's or FMUL's, can impact performance considerably on some systems. - - Flops.c consists of 8 independent modules (routines) which, except for - module 2, conduct numerical integration of various functions. Module - 2, estimates the value of pi based upon the Maclaurin series expansion - of atan(1). MFLOPS ratings are provided for each module, but the - programs overall results are summerized by the MFLOPS(1), MFLOPS(2), - MFLOPS(3), and MFLOPS(4) outputs. - - The MFLOPS(1) result is identical to the result provided by all - previous versions of flops.c. It is based only upon the results from - modules 2 and 3. Two problems surfaced in using MFLOPS(1). First, it - was difficult to completely 'vectorize' the result due to the - recurrence of the 's' variable in module 2. This problem is addressed - in the MFLOPS(2) result which does not use module 2, but maintains - nearly the same weighting of FDIV's (9.2%) as in MFLOPS(1) (9.6%). - The second problem with MFLOPS(1) centers around the percentage of - FDIV's (9.6%) which was viewed as too high for an important class of - problems. This concern is addressed in the MFLOPS(3) result where NO - FDIV's are conducted at all. - - The number of floating-point instructions per iteration (loop) is - given below for each module executed: - - MODULE FADD FSUB FMUL FDIV TOTAL Comment - 1 7 0 6 1 14 7.1% FDIV's - 2 3 2 1 1 7 difficult to vectorize. - 3 6 2 9 0 17 0.0% FDIV's - 4 7 0 8 0 15 0.0% FDIV's - 5 13 0 15 1 29 3.4% FDIV's - 6 13 0 16 0 29 0.0% FDIV's - 7 3 3 3 3 12 25.0% FDIV's - 8 13 0 17 0 30 0.0% FDIV's - - A*2+3 21 12 14 5 52 A=5, MFLOPS(1), Same as - 40.4% 23.1% 26.9% 9.6% previous versions of the - flops.c program. Includes - only Modules 2 and 3, does - 9.6% FDIV's, and is not - easily vectorizable. - - 1+3+4 58 14 66 14 152 A=4, MFLOPS(2), New output - +5+6+ 38.2% 9.2% 43.4% 9.2% does not include Module 2, - A*7 but does 9.2% FDIV's. - - 1+3+4 62 5 74 5 146 A=0, MFLOPS(3), New output - +5+6+ 42.9% 3.4% 50.7% 3.4% does not include Module 2, - 7+8 but does 3.4% FDIV's. - - 3+4+6 39 2 50 0 91 A=0, MFLOPS(4), New output - +8 42.9% 2.2% 54.9% 0.0% does not include Module 2, - and does NO FDIV's. - - NOTE: Various timer routines are included as indicated below. The - timer routines, with some comments, are attached at the end - of the main program. - - NOTE: Please do not remove any of the printouts. - - EXAMPLE COMPILATION: - UNIX based systems - cc -DUNIX -O flops.c -o flops - cc -DUNIX -DROPT flops.c -o flops - cc -DUNIX -fast -O4 flops.c -o flops - . - . - . - etc. - - Al Aburto - aburto@nosc.mil -*/ - -/***************************************************************/ -/* Timer options. You MUST uncomment one of the options below */ -/* or compile, for example, with the '-DUNIX' option. */ -/***************************************************************/ -/* #define Amiga */ -/* #define UNIX */ -/* #define UNIX_Old */ -/* #define VMS */ -/* #define BORLAND_C */ -/* #define MSC */ -/* #define MAC */ -/* #define IPSC */ -/* #define FORTRAN_SEC */ -/* #define GTODay */ -/* #define CTimer */ -/* #define UXPM */ -/* #define MAC_TMgr */ -/* #define PARIX */ -/* #define POSIX */ -/* #define WIN32 */ -/* #define POSIX1 */ -/***********************/ - -#include -#include - /* 'Uncomment' the line below to run */ - /* with 'register double' variables */ - /* defined, or compile with the */ - /* '-DROPT' option. Don't need this if */ - /* registers used automatically, but */ - /* you might want to try it anyway. */ -/* #define ROPT */ - -double nulltime, TimeArray[3]; /* Variables needed for 'dtime()'. */ -double TLimit; /* Threshold to determine Number of */ - /* Loops to run. Fixed at 15.0 seconds.*/ - -double T[36]; /* Global Array used to hold timing */ - /* results and other information. */ - -double sa,sb,sc,sd,one,two,three; -double four,five,piref,piprg; -double scale,pierr; - -double A0 = 1.0; -double A1 = -0.1666666666671334; -double A2 = 0.833333333809067E-2; -double A3 = 0.198412715551283E-3; -double A4 = 0.27557589750762E-5; -double A5 = 0.2507059876207E-7; -double A6 = 0.164105986683E-9; - -double B0 = 1.0; -double B1 = -0.4999999999982; -double B2 = 0.4166666664651E-1; -double B3 = -0.1388888805755E-2; -double B4 = 0.24801428034E-4; -double B5 = -0.2754213324E-6; -double B6 = 0.20189405E-8; - -double C0 = 1.0; -double C1 = 0.99999999668; -double C2 = 0.49999995173; -double C3 = 0.16666704243; -double C4 = 0.4166685027E-1; -double C5 = 0.832672635E-2; -double C6 = 0.140836136E-2; -double C7 = 0.17358267E-3; -double C8 = 0.3931683E-4; - -double D1 = 0.3999999946405E-1; -double D2 = 0.96E-3; -double D3 = 0.1233153E-5; - -double E2 = 0.48E-3; -double E3 = 0.411051E-6; - -// void dtime(double p[]); - -int main() -{ - -#ifdef ROPT - register double s,u,v,w,x; -#else - double s,u,v,w,x; -#endif - - long loops, NLimit; - register long i, m, n; - - printf("\n"); - printf(" FLOPS C Program (Double Precision), V2.0 18 Dec 1992\n\n"); - - /****************************/ - loops = 15625; /* Initial number of loops. */ - /* DO NOT CHANGE! */ - /****************************/ - -/****************************************************/ -/* Set Variable Values. */ -/* T[1] references all timing results relative to */ -/* one million loops. */ -/* */ -/* The program will execute from 31250 to 512000000 */ -/* loops based on a runtime of Module 1 of at least */ -/* TLimit = 15.0 seconds. That is, a runtime of 15 */ -/* seconds for Module 1 is used to determine the */ -/* number of loops to execute. */ -/* */ -/* No more than NLimit = 512000000 loops are allowed*/ -/****************************************************/ - - T[1] = 1.0E+06/(double)loops; - - TLimit = 15.0; - NLimit = 512000000; - - piref = 3.14159265358979324; - one = 1.0; - two = 2.0; - three = 3.0; - four = 4.0; - five = 5.0; - scale = one; - - printf(" Module Error RunTime MFLOPS\n"); - printf(" (usec)\n"); -/*************************/ -/* Initialize the timer. */ -/*************************/ - - dtime(TimeArray); - dtime(TimeArray); - -/*******************************************************/ -/* Module 1. Calculate integral of df(x)/f(x) defined */ -/* below. Result is ln(f(1)). There are 14 */ -/* double precision operations per loop */ -/* ( 7 +, 0 -, 6 *, 1 / ) that are included */ -/* in the timing. */ -/* 50.0% +, 00.0% -, 42.9% *, and 07.1% / */ -/*******************************************************/ - n = loops; - sa = 0.0; - - while ( sa < TLimit ) - { - n = 2 * n; - x = one / (double)n; /*********************/ - s = 0.0; /* Loop 1. */ - v = 0.0; /*********************/ - w = one; - - dtime(TimeArray); - for( i = 1 ; i <= n-1 ; i++ ) - { - v = v + w; - u = v * x; - s = s + (D1+u*(D2+u*D3))/(w+u*(D1+u*(E2+u*E3))); - } - dtime(TimeArray); - sa = TimeArray[1]; - - if ( n == NLimit ) break; - /* printf(" %10ld %12.5lf\n",n,sa); */ - } - - scale = 1.0E+06 / (double)n; - T[1] = scale; - -/****************************************/ -/* Estimate nulltime ('for' loop time). */ -/****************************************/ - dtime(TimeArray); - for( i = 1 ; i <= n-1 ; i++ ) - { - } - dtime(TimeArray); - nulltime = T[1] * TimeArray[1]; - if ( nulltime < 0.0 ) nulltime = 0.0; - - T[2] = T[1] * sa - nulltime; - - sa = (D1+D2+D3)/(one+D1+E2+E3); - sb = D1; - - T[3] = T[2] / 14.0; /*********************/ - sa = x * ( sa + sb + two * s ) / two; /* Module 1 Results. */ - sb = one / sa; /*********************/ - n = (long)( (double)( 40000 * (long)sb ) / scale ); - sc = sb - 25.2; - T[4] = one / T[3]; - /********************/ - /* DO NOT REMOVE */ - /* THIS PRINTOUT! */ - /********************/ - printf(" 1 %13.4le %10.4lf %10.4lf\n",sc,T[2],T[4]); - - m = n; - -/*******************************************************/ -/* Module 2. Calculate value of PI from Taylor Series */ -/* expansion of atan(1.0). There are 7 */ -/* double precision operations per loop */ -/* ( 3 +, 2 -, 1 *, 1 / ) that are included */ -/* in the timing. */ -/* 42.9% +, 28.6% -, 14.3% *, and 14.3% / */ -/*******************************************************/ - - s = -five; /********************/ - sa = -one; /* Loop 2. */ - /********************/ - dtime(TimeArray); - for ( i = 1 ; i <= m ; i++ ) - { - s = -s; - sa = sa + s; - } - dtime(TimeArray); - T[5] = T[1] * TimeArray[1]; - if ( T[5] < 0.0 ) T[5] = 0.0; - - sc = (double)m; - - u = sa; /*********************/ - v = 0.0; /* Loop 3. */ - w = 0.0; /*********************/ - x = 0.0; - - dtime(TimeArray); - for ( i = 1 ; i <= m ; i++) - { - s = -s; - sa = sa + s; - u = u + two; - x = x +(s - u); - v = v - s * u; - w = w + s / u; - } - dtime(TimeArray); - T[6] = T[1] * TimeArray[1]; - - T[7] = ( T[6] - T[5] ) / 7.0; /*********************/ - m = (long)( sa * x / sc ); /* PI Results */ - sa = four * w / five; /*********************/ - sb = sa + five / v; - sc = 31.25; - piprg = sb - sc / (v * v * v); - pierr = piprg - piref; - T[8] = one / T[7]; - /*********************/ - /* DO NOT REMOVE */ - /* THIS PRINTOUT! */ - /*********************/ - printf(" 2 %13.4le %10.4lf %10.4lf\n",pierr,T[6]-T[5],T[8]); - -/*******************************************************/ -/* Module 3. Calculate integral of sin(x) from 0.0 to */ -/* PI/3.0 using Trapazoidal Method. Result */ -/* is 0.5. There are 17 double precision */ -/* operations per loop (6 +, 2 -, 9 *, 0 /) */ -/* included in the timing. */ -/* 35.3% +, 11.8% -, 52.9% *, and 00.0% / */ -/*******************************************************/ - - x = piref / ( three * (double)m ); /*********************/ - s = 0.0; /* Loop 4. */ - v = 0.0; /*********************/ - - dtime(TimeArray); - for( i = 1 ; i <= m-1 ; i++ ) - { - v = v + one; - u = v * x; - w = u * u; - s = s + u * ((((((A6*w-A5)*w+A4)*w-A3)*w+A2)*w+A1)*w+one); - } - dtime(TimeArray); - T[9] = T[1] * TimeArray[1] - nulltime; - - u = piref / three; - w = u * u; - sa = u * ((((((A6*w-A5)*w+A4)*w-A3)*w+A2)*w+A1)*w+one); - - T[10] = T[9] / 17.0; /*********************/ - sa = x * ( sa + two * s ) / two; /* sin(x) Results. */ - sb = 0.5; /*********************/ - sc = sa - sb; - T[11] = one / T[10]; - /*********************/ - /* DO NOT REMOVE */ - /* THIS PRINTOUT! */ - /*********************/ - printf(" 3 %13.4le %10.4lf %10.4lf\n",sc,T[9],T[11]); - -/************************************************************/ -/* Module 4. Calculate Integral of cos(x) from 0.0 to PI/3 */ -/* using the Trapazoidal Method. Result is */ -/* sin(PI/3). There are 15 double precision */ -/* operations per loop (7 +, 0 -, 8 *, and 0 / ) */ -/* included in the timing. */ -/* 50.0% +, 00.0% -, 50.0% *, 00.0% / */ -/************************************************************/ - A3 = -A3; - A5 = -A5; - x = piref / ( three * (double)m ); /*********************/ - s = 0.0; /* Loop 5. */ - v = 0.0; /*********************/ - - dtime(TimeArray); - for( i = 1 ; i <= m-1 ; i++ ) - { - u = (double)i * x; - w = u * u; - s = s + w*(w*(w*(w*(w*(B6*w+B5)+B4)+B3)+B2)+B1)+one; - } - dtime(TimeArray); - T[12] = T[1] * TimeArray[1] - nulltime; - - u = piref / three; - w = u * u; - sa = w*(w*(w*(w*(w*(B6*w+B5)+B4)+B3)+B2)+B1)+one; - - T[13] = T[12] / 15.0; /*******************/ - sa = x * ( sa + one + two * s ) / two; /* Module 4 Result */ - u = piref / three; /*******************/ - w = u * u; - sb = u * ((((((A6*w+A5)*w+A4)*w+A3)*w+A2)*w+A1)*w+A0); - sc = sa - sb; - T[14] = one / T[13]; - /*********************/ - /* DO NOT REMOVE */ - /* THIS PRINTOUT! */ - /*********************/ - printf(" 4 %13.4le %10.4lf %10.4lf\n",sc,T[12],T[14]); - -/************************************************************/ -/* Module 5. Calculate Integral of tan(x) from 0.0 to PI/3 */ -/* using the Trapazoidal Method. Result is */ -/* ln(cos(PI/3)). There are 29 double precision */ -/* operations per loop (13 +, 0 -, 15 *, and 1 /)*/ -/* included in the timing. */ -/* 46.7% +, 00.0% -, 50.0% *, and 03.3% / */ -/************************************************************/ - - x = piref / ( three * (double)m ); /*********************/ - s = 0.0; /* Loop 6. */ - v = 0.0; /*********************/ - - dtime(TimeArray); - for( i = 1 ; i <= m-1 ; i++ ) - { - u = (double)i * x; - w = u * u; - v = u * ((((((A6*w+A5)*w+A4)*w+A3)*w+A2)*w+A1)*w+one); - s = s + v / (w*(w*(w*(w*(w*(B6*w+B5)+B4)+B3)+B2)+B1)+one); - } - dtime(TimeArray); - T[15] = T[1] * TimeArray[1] - nulltime; - - u = piref / three; - w = u * u; - sa = u*((((((A6*w+A5)*w+A4)*w+A3)*w+A2)*w+A1)*w+one); - sb = w*(w*(w*(w*(w*(B6*w+B5)+B4)+B3)+B2)+B1)+one; - sa = sa / sb; - - T[16] = T[15] / 29.0; /*******************/ - sa = x * ( sa + two * s ) / two; /* Module 5 Result */ - sb = 0.6931471805599453; /*******************/ - sc = sa - sb; - T[17] = one / T[16]; - /*********************/ - /* DO NOT REMOVE */ - /* THIS PRINTOUT! */ - /*********************/ - printf(" 5 %13.4le %10.4lf %10.4lf\n",sc,T[15],T[17]); - -/************************************************************/ -/* Module 6. Calculate Integral of sin(x)*cos(x) from 0.0 */ -/* to PI/4 using the Trapazoidal Method. Result */ -/* is sin(PI/4)^2. There are 29 double precision */ -/* operations per loop (13 +, 0 -, 16 *, and 0 /)*/ -/* included in the timing. */ -/* 46.7% +, 00.0% -, 53.3% *, and 00.0% / */ -/************************************************************/ - - x = piref / ( four * (double)m ); /*********************/ - s = 0.0; /* Loop 7. */ - v = 0.0; /*********************/ - - dtime(TimeArray); - for( i = 1 ; i <= m-1 ; i++ ) - { - u = (double)i * x; - w = u * u; - v = u * ((((((A6*w+A5)*w+A4)*w+A3)*w+A2)*w+A1)*w+one); - s = s + v*(w*(w*(w*(w*(w*(B6*w+B5)+B4)+B3)+B2)+B1)+one); - } - dtime(TimeArray); - T[18] = T[1] * TimeArray[1] - nulltime; - - u = piref / four; - w = u * u; - sa = u*((((((A6*w+A5)*w+A4)*w+A3)*w+A2)*w+A1)*w+one); - sb = w*(w*(w*(w*(w*(B6*w+B5)+B4)+B3)+B2)+B1)+one; - sa = sa * sb; - - T[19] = T[18] / 29.0; /*******************/ - sa = x * ( sa + two * s ) / two; /* Module 6 Result */ - sb = 0.25; /*******************/ - sc = sa - sb; - T[20] = one / T[19]; - /*********************/ - /* DO NOT REMOVE */ - /* THIS PRINTOUT! */ - /*********************/ - printf(" 6 %13.4le %10.4lf %10.4lf\n",sc,T[18],T[20]); - - -/*******************************************************/ -/* Module 7. Calculate value of the definite integral */ -/* from 0 to sa of 1/(x+1), x/(x*x+1), and */ -/* x*x/(x*x*x+1) using the Trapizoidal Rule.*/ -/* There are 12 double precision operations */ -/* per loop ( 3 +, 3 -, 3 *, and 3 / ) that */ -/* are included in the timing. */ -/* 25.0% +, 25.0% -, 25.0% *, and 25.0% / */ -/*******************************************************/ - - /*********************/ - s = 0.0; /* Loop 8. */ - w = one; /*********************/ - sa = 102.3321513995275; - v = sa / (double)m; - - dtime(TimeArray); - for ( i = 1 ; i <= m-1 ; i++) - { - x = (double)i * v; - u = x * x; - s = s - w / ( x + w ) - x / ( u + w ) - u / ( x * u + w ); - } - dtime(TimeArray); - T[21] = T[1] * TimeArray[1] - nulltime; - /*********************/ - /* Module 7 Results */ - /*********************/ - T[22] = T[21] / 12.0; - x = sa; - u = x * x; - sa = -w - w / ( x + w ) - x / ( u + w ) - u / ( x * u + w ); - sa = 18.0 * v * (sa + two * s ); - - m = -2000 * (long)sa; - m = (long)( (double)m / scale ); - - sc = sa + 500.2; - T[23] = one / T[22]; - /********************/ - /* DO NOT REMOVE */ - /* THIS PRINTOUT! */ - /********************/ - printf(" 7 %13.4le %10.4lf %10.4lf\n",sc,T[21],T[23]); - -/************************************************************/ -/* Module 8. Calculate Integral of sin(x)*cos(x)*cos(x) */ -/* from 0 to PI/3 using the Trapazoidal Method. */ -/* Result is (1-cos(PI/3)^3)/3. There are 30 */ -/* double precision operations per loop included */ -/* in the timing: */ -/* 13 +, 0 -, 17 * 0 / */ -/* 46.7% +, 00.0% -, 53.3% *, and 00.0% / */ -/************************************************************/ - - x = piref / ( three * (double)m ); /*********************/ - s = 0.0; /* Loop 9. */ - v = 0.0; /*********************/ - - dtime(TimeArray); - for( i = 1 ; i <= m-1 ; i++ ) - { - u = (double)i * x; - w = u * u; - v = w*(w*(w*(w*(w*(B6*w+B5)+B4)+B3)+B2)+B1)+one; - s = s + v*v*u*((((((A6*w+A5)*w+A4)*w+A3)*w+A2)*w+A1)*w+one); - } - dtime(TimeArray); - T[24] = T[1] * TimeArray[1] - nulltime; - - u = piref / three; - w = u * u; - sa = u*((((((A6*w+A5)*w+A4)*w+A3)*w+A2)*w+A1)*w+one); - sb = w*(w*(w*(w*(w*(B6*w+B5)+B4)+B3)+B2)+B1)+one; - sa = sa * sb * sb; - - T[25] = T[24] / 30.0; /*******************/ - sa = x * ( sa + two * s ) / two; /* Module 8 Result */ - sb = 0.29166666666666667; /*******************/ - sc = sa - sb; - T[26] = one / T[25]; - /*********************/ - /* DO NOT REMOVE */ - /* THIS PRINTOUT! */ - /*********************/ - printf(" 8 %13.4le %10.4lf %10.4lf\n",sc,T[24],T[26]); - -/**************************************************/ -/* MFLOPS(1) output. This is the same weighting */ -/* used for all previous versions of the flops.c */ -/* program. Includes Modules 2 and 3 only. */ -/**************************************************/ - T[27] = ( five * (T[6] - T[5]) + T[9] ) / 52.0; - T[28] = one / T[27]; - -/**************************************************/ -/* MFLOPS(2) output. This output does not include */ -/* Module 2, but it still does 9.2% FDIV's. */ -/**************************************************/ - T[29] = T[2] + T[9] + T[12] + T[15] + T[18]; - T[29] = (T[29] + four * T[21]) / 152.0; - T[30] = one / T[29]; - -/**************************************************/ -/* MFLOPS(3) output. This output does not include */ -/* Module 2, but it still does 3.4% FDIV's. */ -/**************************************************/ - T[31] = T[2] + T[9] + T[12] + T[15] + T[18]; - T[31] = (T[31] + T[21] + T[24]) / 146.0; - T[32] = one / T[31]; - -/**************************************************/ -/* MFLOPS(4) output. This output does not include */ -/* Module 2, and it does NO FDIV's. */ -/**************************************************/ - T[33] = (T[9] + T[12] + T[18] + T[24]) / 91.0; - T[34] = one / T[33]; - - - printf("\n"); - printf(" Iterations = %10ld\n",m); - printf(" NullTime (usec) = %10.4lf\n",nulltime); - printf(" MFLOPS(1) = %10.4lf\n",T[28]); - printf(" MFLOPS(2) = %10.4lf\n",T[30]); - printf(" MFLOPS(3) = %10.4lf\n",T[32]); - printf(" MFLOPS(4) = %10.4lf\n\n",T[34]); - return 0; -} - -/*****************************************************/ -/* Various timer routines. */ -/* Al Aburto, aburto@nosc.mil, 18 Feb 1997 */ -/* */ -/* dtime(p) outputs the elapsed time seconds in p[1] */ -/* from a call of dtime(p) to the next call of */ -/* dtime(p). Use CAUTION as some of these routines */ -/* will mess up when timing across the hour mark!!! */ -/* */ -/* For timing I use the 'user' time whenever */ -/* possible. Using 'user+sys' time is a separate */ -/* issue. */ -/* */ -/* Example Usage: */ -/* [Timer options added here] */ -/* double RunTime, TimeArray[3]; */ -/* main() */ -/* { */ -/* dtime(TimeArray); */ -/* [routine to time] */ -/* dtime(TimeArray); */ -/* RunTime = TimeArray[1]; */ -/* } */ -/* [Timer code added here] */ -/*****************************************************/ - -/******************************/ -/* Timer code. */ -/******************************/ - -/*******************/ -/* Amiga dtime() */ -/*******************/ -#ifdef Amiga -#include -#define HZ 50 - -dtime(p) -double p[]; -{ - double q; - - struct tt { - long days; - long minutes; - long ticks; - } tt; - - q = p[2]; - - DateStamp(&tt); - - p[2] = ( (double)(tt.ticks + (tt.minutes * 60L * 50L)) ) / (double)HZ; - p[1] = p[2] - q; - - return 0; -} -#endif - -/*****************************************************/ -/* UNIX dtime(). This is the preferred UNIX timer. */ -/* Provided by: Markku Kolkka, mk59200@cc.tut.fi */ -/* HP-UX Addition by: Bo Thide', bt@irfu.se */ -/*****************************************************/ -#ifdef UNIX -#include -#include - -#ifdef hpux -#include -#define getrusage(a,b) syscall(SYS_getrusage,a,b) -#endif - -struct rusage rusage; - -dtime(p) -double p[]; -{ - double q; - - q = p[2]; - - getrusage(RUSAGE_SELF,&rusage); - - p[2] = (double)(rusage.ru_utime.tv_sec); - p[2] = p[2] + (double)(rusage.ru_utime.tv_usec) * 1.0e-06; - p[1] = p[2] - q; - - return 0; -} -#endif - -/***************************************************/ -/* UNIX_Old dtime(). This is the old UNIX timer. */ -/* Use only if absolutely necessary as HZ may be */ -/* ill defined on your system. */ -/***************************************************/ -#ifdef UNIX_Old -#include -#include -#include - -#ifndef HZ -#define HZ 60 -#endif - -struct tms tms; - -dtime(p) -double p[]; -{ - double q; - - q = p[2]; - - times(&tms); - - p[2] = (double)(tms.tms_utime) / (double)HZ; - p[1] = p[2] - q; - - return 0; -} -#endif - -/*********************************************************/ -/* VMS dtime() for VMS systems. */ -/* Provided by: RAMO@uvphys.phys.UVic.CA */ -/* Some people have run into problems with this timer. */ -/*********************************************************/ -#ifdef VMS -#include time - -#ifndef HZ -#define HZ 100 -#endif - -struct tbuffer_t - { - int proc_user_time; - int proc_system_time; - int child_user_time; - int child_system_time; - }; - -struct tbuffer_t tms; - -dtime(p) -double p[]; -{ - double q; - - q = p[2]; - - times(&tms); - - p[2] = (double)(tms.proc_user_time) / (double)HZ; - p[1] = p[2] - q; - - return 0; -} -#endif - -/******************************/ -/* BORLAND C dtime() for DOS */ -/******************************/ -#ifdef BORLAND_C -#include -#include -#include - -#define HZ 100 -struct time tnow; - -dtime(p) -double p[]; -{ - double q; - - q = p[2]; - - gettime(&tnow); - - p[2] = 60.0 * (double)(tnow.ti_min); - p[2] = p[2] + (double)(tnow.ti_sec); - p[2] = p[2] + (double)(tnow.ti_hund)/(double)HZ; - p[1] = p[2] - q; - - return 0; -} -#endif - -/**************************************/ -/* Microsoft C (MSC) dtime() for DOS */ -/**************************************/ -#ifdef MSC -#include -#include - -#define HZ CLOCKS_PER_SEC -clock_t tnow; - -dtime(p) -double p[]; -{ - double q; - - q = p[2]; - - tnow = clock(); - - p[2] = (double)tnow / (double)HZ; - p[1] = p[2] - q; - - return 0; -} -#endif - -/*************************************/ -/* Macintosh (MAC) Think C dtime() */ -/*************************************/ -#ifdef MAC -#include - -#define HZ 60 - -dtime(p) -double p[]; -{ - double q; - - q = p[2]; - - p[2] = (double)clock() / (double)HZ; - p[1] = p[2] - q; - - return 0; -} -#endif - -/************************************************************/ -/* iPSC/860 (IPSC) dtime() for i860. */ -/* Provided by: Dan Yergeau, yergeau@gloworm.Stanford.EDU */ -/************************************************************/ -#ifdef IPSC -extern double dclock(); - -dtime(p) -double p[]; -{ - double q; - - q = p[2]; - - p[2] = dclock(); - p[1] = p[2] - q; - - return 0; -} -#endif - -/**************************************************/ -/* FORTRAN dtime() for Cray type systems. */ -/* This is the preferred timer for Cray systems. */ -/**************************************************/ -#ifdef FORTRAN_SEC - -fortran double second(); - -dtime(p) -double p[]; -{ - double q,v; - - q = p[2]; - - second(&v); - p[2] = v; - p[1] = p[2] - q; - - return 0; -} -#endif - -/***********************************************************/ -/* UNICOS C dtime() for Cray UNICOS systems. Don't use */ -/* unless absolutely necessary as returned time includes */ -/* 'user+system' time. Provided by: R. Mike Dority, */ -/* dority@craysea.cray.com */ -/***********************************************************/ -#ifdef CTimer -#include - -dtime(p) -double p[]; -{ - double q; - clock_t clock(void); - - q = p[2]; - - p[2] = (double)clock() / (double)CLOCKS_PER_SEC; - p[1] = p[2] - q; - - return 0; -} -#endif - -/********************************************/ -/* Another UNIX timer using gettimeofday(). */ -/* However, getrusage() is preferred. */ -/********************************************/ -#ifdef GTODay -#include - -struct timeval tnow; - -dtime(p) -double p[]; -{ - double q; - - q = p[2]; - - gettimeofday(&tnow,NULL); - p[2] = (double)tnow.tv_sec + (double)tnow.tv_usec * 1.0e-6; - p[1] = p[2] - q; - - return 0; -} -#endif - -/*****************************************************/ -/* Fujitsu UXP/M timer. */ -/* Provided by: Mathew Lim, ANUSF, M.Lim@anu.edu.au */ -/*****************************************************/ -#ifdef UXPM -#include -#include -struct tmsu rusage; - -dtime(p) -double p[]; -{ - double q; - - q = p[2]; - - timesu(&rusage); - - p[2] = (double)(rusage.tms_utime) * 1.0e-06; - p[1] = p[2] - q; - - return 0; -} -#endif - -/**********************************************/ -/* Macintosh (MAC_TMgr) Think C dtime() */ -/* requires Think C Language Extensions or */ -/* #include in the prefix */ -/* provided by Francis H Schiffer 3rd (fhs) */ -/* skipschiffer@genie.geis.com */ -/**********************************************/ -#ifdef MAC_TMgr -#include -#include - -static TMTask mgrTimer; -static Boolean mgrInited = FALSE; -static double mgrClock; - -#define RMV_TIMER RmvTime( (QElemPtr)&mgrTimer ) -#define MAX_TIME 1800000000L -/* MAX_TIME limits time between calls to */ -/* dtime( ) to no more than 30 minutes */ -/* this limitation could be removed by */ -/* creating a completion routine to sum */ -/* 30 minute segments (fhs 1994 feb 9) */ - -static void Remove_timer( ) -{ - RMV_TIMER; - mgrInited = FALSE; -} - -int dtime( p ) -double p[]; -{ - if ( mgrInited ) { - RMV_TIMER; - mgrClock += (MAX_TIME + mgrTimer.tmCount)*1.0e-6; - } else { - if ( _atexit( &Remove_timer ) == 0 ) mgrInited = TRUE; - mgrClock = 0.0; - } - - p[1] = mgrClock - p[2]; - p[2] = mgrClock; - if ( mgrInited ) { - mgrTimer.tmAddr = NULL; - mgrTimer.tmCount = 0; - mgrTimer.tmWakeUp = 0; - mgrTimer.tmReserved = 0; - InsTime( (QElemPtr)&mgrTimer ); - PrimeTime( (QElemPtr)&mgrTimer, -MAX_TIME ); - } - return( 0 ); -} -#endif - -/***********************************************************/ -/* Parsytec GCel timer. */ -/* Provided by: Georg Wambach, gw@informatik.uni-koeln.de */ -/***********************************************************/ -#ifdef PARIX -#include - -dtime(p) -double p[]; -{ - double q; - - q = p[2]; - p[2] = (double) (TimeNowHigh()) / (double) CLK_TCK_HIGH; - p[1] = p[2] - q; - - return 0; -} -#endif - -/************************************************/ -/* Sun Solaris POSIX dtime() routine */ -/* Provided by: Case Larsen, CTLarsen@lbl.gov */ -/************************************************/ -#ifdef POSIX -#include -#include -#include - -#ifdef __hpux -#include -#define getrusage(a,b) syscall(SYS_getrusage,a,b) -#endif - -struct rusage rusage; - -dtime(p) -double p[]; -{ - double q; - - q = p[2]; - - getrusage(RUSAGE_SELF,&rusage); - - p[2] = (double)(rusage.ru_utime.tv_sec); - p[2] = p[2] + (double)(rusage.ru_utime.tv_nsec) * 1.0e-09; - p[1] = p[2] - q; - - return 0; -} -#endif - -/****************************************************/ -/* Windows NT (32 bit) dtime() routine */ -/* Provided by: Piers Haken, piersh@microsoft.com */ -/****************************************************/ -#ifdef WIN32 -#include - -dtime(p) -double p[]; -{ - double q; - - q = p[2]; - - p[2] = (double)GetTickCount() * 1.0e-03; - p[1] = p[2] - q; - - return 0; -} -#endif - -/*****************************************************/ -/* Time according to POSIX.1 - */ -/* Ref: "POSIX Programmer's Guide" O'Reilly & Assoc.*/ -/*****************************************************/ -#ifdef POSIX1 -#define _POSIX_SOURCE 1 -#include -#include -#include - -struct tms tms; - -dtime(p) -double p[]; -{ - double q; - times(&tms); - q = p[2]; - p[2] = (double)tms.tms_utime / (double)CLK_TCK; - p[1] = p[2] - q; - return 0; -} -#endif - -/*------ End flops.c code, say good night Jan! (Sep 1992) ------*/ diff --git a/sheet3/1/flops.c:Zone.Identifier b/sheet3/1/flops.c:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/sheet3/1/mysecond.c b/sheet3/1/mysecond.c deleted file mode 100644 index d206a4a..0000000 --- a/sheet3/1/mysecond.c +++ /dev/null @@ -1,27 +0,0 @@ -/* A gettimeofday routine to give access to the wall - clock timer on most UNIX-like systems. - - This version defines two entry points -- with - and without appended underscores, so it *should* - automagically link with FORTRAN */ - -#include - -double mysecond() -{ -/* struct timeval { long tv_sec; - long tv_usec; }; - -struct timezone { int tz_minuteswest; - int tz_dsttime; }; */ - - struct timeval tp; - struct timezone tzp; - int i; - - i = gettimeofday(&tp,&tzp); - return ( (double) tp.tv_sec + (double) tp.tv_usec * 1.e-6 ); -} - -double mysecond_() {return mysecond();} - diff --git a/sheet3/1/mysecond.c:Zone.Identifier b/sheet3/1/mysecond.c:Zone.Identifier deleted file mode 100644 index e69de29..0000000 diff --git a/sheet3/1/output_pc1.txt b/sheet3/1/output_pc1.txt deleted file mode 100644 index 487d1f9..0000000 --- a/sheet3/1/output_pc1.txt +++ /dev/null @@ -1,60 +0,0 @@ -rm -f *.exe *.o -gcc -O3 -c -o mysecond.o mysecond.c -gcc -O3 -c mysecond.c -gfortran -O3 -DSTREAM_ARRAY_SIZE=80000000 -DNTIMES=20 -c stream.f -gfortran -O3 stream.o mysecond.o -o stream_f.exe -gcc -O3 -DSTREAM_ARRAY_SIZE=80000000 -DNTIMES=20 stream.c -o stream_c.exe -gcc -O3 -DUNIX flops.c -o flops.exe -./stream_c.exe -------------------------------------------------------------- -STREAM version $Revision: 5.10 $ -------------------------------------------------------------- -This system uses 8 bytes per array element. -------------------------------------------------------------- -Array size = 80000000 (elements), Offset = 0 (elements) -Memory per array = 610.4 MiB (= 0.6 GiB). -Total memory required = 1831.1 MiB (= 1.8 GiB). -Each kernel will be executed 20 times. - The *best* time for each kernel (excluding the first iteration) - will be used to compute the reported bandwidth. -------------------------------------------------------------- -Your clock granularity/precision appears to be 1 microseconds. -Each test below will take on the order of 46252 microseconds. - (= 46252 clock ticks) -Increase the size of the arrays if this shows that -you are not getting at least 20 clock ticks per test. -------------------------------------------------------------- -WARNING -- The above is only a rough guideline. -For best results, please be sure you know the -precision of your system timer. -------------------------------------------------------------- -Function Best Rate MB/s Avg time Min time Max time -Copy: 28478.6 0.047858 0.044946 0.054333 -Scale: 20551.4 0.066044 0.062283 0.077807 -Add: 22534.2 0.089671 0.085204 0.099586 -Triad: 22709.5 0.088864 0.084546 0.098536 -------------------------------------------------------------- -Solution Validates: avg error less than 1.000000e-13 on all three arrays -------------------------------------------------------------- -./flops.exe - - FLOPS C Program (Double Precision), V2.0 18 Dec 1992 - - Module Error RunTime MFLOPS - (usec) - 1 4.0146e-13 0.0021 6622.7552 - 2 -1.4166e-13 0.0006 12723.3419 - 3 4.7184e-14 0.0027 6253.2599 - 4 -1.2557e-13 0.0026 5758.6323 - 5 -1.3800e-13 0.0051 5740.4851 - 6 3.2380e-13 0.0051 5674.2511 - 7 -8.4583e-11 0.0031 3827.0478 - 8 3.4867e-13 0.0053 5610.0203 - - Iterations = 512000000 - NullTime (usec) = 0.0000 - MFLOPS(1) = 9507.3864 - MFLOPS(2) = 5042.7572 - MFLOPS(3) = 5597.4972 - MFLOPS(4) = 5766.1547 - diff --git a/sheet3/1/stream.c b/sheet3/1/stream.c deleted file mode 100644 index b9a2cee..0000000 --- a/sheet3/1/stream.c +++ /dev/null @@ -1,585 +0,0 @@ -/*-----------------------------------------------------------------------*/ -/* Program: STREAM */ -/* Revision: $Id: stream.c,v 5.10 2013/01/17 16:01:06 mccalpin Exp mccalpin $ */ -/* Original code developed by John D. McCalpin */ -/* Programmers: John D. McCalpin */ -/* Joe R. Zagar */ -/* */ -/* This program measures memory transfer rates in MB/s for simple */ -/* computational kernels coded in C. */ -/*-----------------------------------------------------------------------*/ -/* Copyright 1991-2013: John D. McCalpin */ -/*-----------------------------------------------------------------------*/ -/* License: */ -/* 1. You are free to use this program and/or to redistribute */ -/* this program. */ -/* 2. You are free to modify this program for your own use, */ -/* including commercial use, subject to the publication */ -/* restrictions in item 3. */ -/* 3. You are free to publish results obtained from running this */ -/* program, or from works that you derive from this program, */ -/* with the following limitations: */ -/* 3a. In order to be referred to as "STREAM benchmark results", */ -/* published results must be in conformance to the STREAM */ -/* Run Rules, (briefly reviewed below) published at */ -/* http://www.cs.virginia.edu/stream/ref.html */ -/* and incorporated herein by reference. */ -/* As the copyright holder, John McCalpin retains the */ -/* right to determine conformity with the Run Rules. */ -/* 3b. Results based on modified source code or on runs not in */ -/* accordance with the STREAM Run Rules must be clearly */ -/* labelled whenever they are published. Examples of */ -/* proper labelling include: */ -/* "tuned STREAM benchmark results" */ -/* "based on a variant of the STREAM benchmark code" */ -/* Other comparable, clear, and reasonable labelling is */ -/* acceptable. */ -/* 3c. Submission of results to the STREAM benchmark web site */ -/* is encouraged, but not required. */ -/* 4. Use of this program or creation of derived works based on this */ -/* program constitutes acceptance of these licensing restrictions. */ -/* 5. Absolutely no warranty is expressed or implied. */ -/*-----------------------------------------------------------------------*/ -# include -# include -# include -# include -# include -# include - -/*----------------------------------------------------------------------- - * INSTRUCTIONS: - * - * 1) STREAM requires different amounts of memory to run on different - * systems, depending on both the system cache size(s) and the - * granularity of the system timer. - * You should adjust the value of 'STREAM_ARRAY_SIZE' (below) - * to meet *both* of the following criteria: - * (a) Each array must be at least 4 times the size of the - * available cache memory. I don't worry about the difference - * between 10^6 and 2^20, so in practice the minimum array size - * is about 3.8 times the cache size. - * Example 1: One Xeon E3 with 8 MB L3 cache - * STREAM_ARRAY_SIZE should be >= 4 million, giving - * an array size of 30.5 MB and a total memory requirement - * of 91.5 MB. - * Example 2: Two Xeon E5's with 20 MB L3 cache each (using OpenMP) - * STREAM_ARRAY_SIZE should be >= 20 million, giving - * an array size of 153 MB and a total memory requirement - * of 458 MB. - * (b) The size should be large enough so that the 'timing calibration' - * output by the program is at least 20 clock-ticks. - * Example: most versions of Windows have a 10 millisecond timer - * granularity. 20 "ticks" at 10 ms/tic is 200 milliseconds. - * If the chip is capable of 10 GB/s, it moves 2 GB in 200 msec. - * This means the each array must be at least 1 GB, or 128M elements. - * - * Version 5.10 increases the default array size from 2 million - * elements to 10 million elements in response to the increasing - * size of L3 caches. The new default size is large enough for caches - * up to 20 MB. - * Version 5.10 changes the loop index variables from "register int" - * to "ssize_t", which allows array indices >2^32 (4 billion) - * on properly configured 64-bit systems. Additional compiler options - * (such as "-mcmodel=medium") may be required for large memory runs. - * - * Array size can be set at compile time without modifying the source - * code for the (many) compilers that support preprocessor definitions - * on the compile line. E.g., - * gcc -O -DSTREAM_ARRAY_SIZE=100000000 stream.c -o stream.100M - * will override the default size of 10M with a new size of 100M elements - * per array. - */ -#ifndef STREAM_ARRAY_SIZE -# define STREAM_ARRAY_SIZE 10000000 -#endif - -/* 2) STREAM runs each kernel "NTIMES" times and reports the *best* result - * for any iteration after the first, therefore the minimum value - * for NTIMES is 2. - * There are no rules on maximum allowable values for NTIMES, but - * values larger than the default are unlikely to noticeably - * increase the reported performance. - * NTIMES can also be set on the compile line without changing the source - * code using, for example, "-DNTIMES=7". - */ -#ifdef NTIMES -#if NTIMES<=1 -# define NTIMES 10 -#endif -#endif -#ifndef NTIMES -# define NTIMES 10 -#endif - -/* Users are allowed to modify the "OFFSET" variable, which *may* change the - * relative alignment of the arrays (though compilers may change the - * effective offset by making the arrays non-contiguous on some systems). - * Use of non-zero values for OFFSET can be especially helpful if the - * STREAM_ARRAY_SIZE is set to a value close to a large power of 2. - * OFFSET can also be set on the compile line without changing the source - * code using, for example, "-DOFFSET=56". - */ -#ifndef OFFSET -# define OFFSET 0 -#endif - -/* - * 3) Compile the code with optimization. Many compilers generate - * unreasonably bad code before the optimizer tightens things up. - * If the results are unreasonably good, on the other hand, the - * optimizer might be too smart for me! - * - * For a simple single-core version, try compiling with: - * cc -O stream.c -o stream - * This is known to work on many, many systems.... - * - * To use multiple cores, you need to tell the compiler to obey the OpenMP - * directives in the code. This varies by compiler, but a common example is - * gcc -O -fopenmp stream.c -o stream_omp - * The environment variable OMP_NUM_THREADS allows runtime control of the - * number of threads/cores used when the resulting "stream_omp" program - * is executed. - * - * To run with single-precision variables and arithmetic, simply add - * -DSTREAM_TYPE=float - * to the compile line. - * Note that this changes the minimum array sizes required --- see (1) above. - * - * The preprocessor directive "TUNED" does not do much -- it simply causes the - * code to call separate functions to execute each kernel. Trivial versions - * of these functions are provided, but they are *not* tuned -- they just - * provide predefined interfaces to be replaced with tuned code. - * - * - * 4) Optional: Mail the results to mccalpin@cs.virginia.edu - * Be sure to include info that will help me understand: - * a) the computer hardware configuration (e.g., processor model, memory type) - * b) the compiler name/version and compilation flags - * c) any run-time information (such as OMP_NUM_THREADS) - * d) all of the output from the test case. - * - * Thanks! - * - *-----------------------------------------------------------------------*/ - -# define HLINE "-------------------------------------------------------------\n" - -# ifndef MIN -# define MIN(x,y) ((x)<(y)?(x):(y)) -# endif -# ifndef MAX -# define MAX(x,y) ((x)>(y)?(x):(y)) -# endif - -#ifndef STREAM_TYPE -#define STREAM_TYPE double -#endif - -static STREAM_TYPE a[STREAM_ARRAY_SIZE+OFFSET], - b[STREAM_ARRAY_SIZE+OFFSET], - c[STREAM_ARRAY_SIZE+OFFSET]; - -static double avgtime[4] = {0}, maxtime[4] = {0}, - mintime[4] = {FLT_MAX,FLT_MAX,FLT_MAX,FLT_MAX}; - -static char *label[4] = {"Copy: ", "Scale: ", - "Add: ", "Triad: "}; - -static double bytes[4] = { - 2 * sizeof(STREAM_TYPE) * STREAM_ARRAY_SIZE, - 2 * sizeof(STREAM_TYPE) * STREAM_ARRAY_SIZE, - 3 * sizeof(STREAM_TYPE) * STREAM_ARRAY_SIZE, - 3 * sizeof(STREAM_TYPE) * STREAM_ARRAY_SIZE - }; - -extern double mysecond(); -extern void checkSTREAMresults(); -#ifdef TUNED -extern void tuned_STREAM_Copy(); -extern void tuned_STREAM_Scale(STREAM_TYPE scalar); -extern void tuned_STREAM_Add(); -extern void tuned_STREAM_Triad(STREAM_TYPE scalar); -#endif -#ifdef _OPENMP -extern int omp_get_num_threads(); -#endif -int -main() - { - int quantum, checktick(); - int BytesPerWord; - int k; - ssize_t j; - STREAM_TYPE scalar; - double t, times[4][NTIMES]; - - /* --- SETUP --- determine precision and check timing --- */ - - printf(HLINE); - printf("STREAM version $Revision: 5.10 $\n"); - printf(HLINE); - BytesPerWord = sizeof(STREAM_TYPE); - printf("This system uses %d bytes per array element.\n", - BytesPerWord); - - printf(HLINE); -#ifdef N - printf("***** WARNING: ******\n"); - printf(" It appears that you set the preprocessor variable N when compiling this code.\n"); - printf(" This version of the code uses the preprocesor variable STREAM_ARRAY_SIZE to control the array size\n"); - printf(" Reverting to default value of STREAM_ARRAY_SIZE=%llu\n",(unsigned long long) STREAM_ARRAY_SIZE); - printf("***** WARNING: ******\n"); -#endif - - printf("Array size = %llu (elements), Offset = %d (elements)\n" , (unsigned long long) STREAM_ARRAY_SIZE, OFFSET); - printf("Memory per array = %.1f MiB (= %.1f GiB).\n", - BytesPerWord * ( (double) STREAM_ARRAY_SIZE / 1024.0/1024.0), - BytesPerWord * ( (double) STREAM_ARRAY_SIZE / 1024.0/1024.0/1024.0)); - printf("Total memory required = %.1f MiB (= %.1f GiB).\n", - (3.0 * BytesPerWord) * ( (double) STREAM_ARRAY_SIZE / 1024.0/1024.), - (3.0 * BytesPerWord) * ( (double) STREAM_ARRAY_SIZE / 1024.0/1024./1024.)); - printf("Each kernel will be executed %d times.\n", NTIMES); - printf(" The *best* time for each kernel (excluding the first iteration)\n"); - printf(" will be used to compute the reported bandwidth.\n"); - -#ifdef _OPENMP - printf(HLINE); -#pragma omp parallel - { -#pragma omp master - { - k = omp_get_num_threads(); - printf ("Number of Threads requested = %i\n",k); - } - } -#endif - -#ifdef _OPENMP - k = 0; -#pragma omp parallel -#pragma omp atomic - k++; - printf ("Number of Threads counted = %i\n",k); -#endif - - /* Get initial value for system clock. */ -#pragma omp parallel for - for (j=0; j= 1) - printf("Your clock granularity/precision appears to be " - "%d microseconds.\n", quantum); - else { - printf("Your clock granularity appears to be " - "less than one microsecond.\n"); - quantum = 1; - } - - t = mysecond(); -#pragma omp parallel for - for (j = 0; j < STREAM_ARRAY_SIZE; j++) - a[j] = 2.0E0 * a[j]; - t = 1.0E6 * (mysecond() - t); - - printf("Each test below will take on the order" - " of %d microseconds.\n", (int) t ); - printf(" (= %d clock ticks)\n", (int) (t/quantum) ); - printf("Increase the size of the arrays if this shows that\n"); - printf("you are not getting at least 20 clock ticks per test.\n"); - - printf(HLINE); - - printf("WARNING -- The above is only a rough guideline.\n"); - printf("For best results, please be sure you know the\n"); - printf("precision of your system timer.\n"); - printf(HLINE); - - /* --- MAIN LOOP --- repeat test cases NTIMES times --- */ - - scalar = 3.0; - for (k=0; k - -double mysecond() -{ - struct timeval tp; - struct timezone tzp; - int i; - - i = gettimeofday(&tp,&tzp); - return ( (double) tp.tv_sec + (double) tp.tv_usec * 1.e-6 ); -} - -#ifndef abs -#define abs(a) ((a) >= 0 ? (a) : -(a)) -#endif -void checkSTREAMresults () -{ - STREAM_TYPE aj,bj,cj,scalar; - STREAM_TYPE aSumErr,bSumErr,cSumErr; - STREAM_TYPE aAvgErr,bAvgErr,cAvgErr; - double epsilon; - ssize_t j; - int k,ierr,err; - - /* reproduce initialization */ - aj = 1.0; - bj = 2.0; - cj = 0.0; - /* a[] is modified during timing check */ - aj = 2.0E0 * aj; - /* now execute timing loop */ - scalar = 3.0; - for (k=0; k epsilon) { - err++; - printf ("Failed Validation on array a[], AvgRelAbsErr > epsilon (%e)\n",epsilon); - printf (" Expected Value: %e, AvgAbsErr: %e, AvgRelAbsErr: %e\n",aj,aAvgErr,abs(aAvgErr)/aj); - ierr = 0; - for (j=0; j epsilon) { - ierr++; -#ifdef VERBOSE - if (ierr < 10) { - printf(" array a: index: %ld, expected: %e, observed: %e, relative error: %e\n", - j,aj,a[j],abs((aj-a[j])/aAvgErr)); - } -#endif - } - } - printf(" For array a[], %d errors were found.\n",ierr); - } - if (abs(bAvgErr/bj) > epsilon) { - err++; - printf ("Failed Validation on array b[], AvgRelAbsErr > epsilon (%e)\n",epsilon); - printf (" Expected Value: %e, AvgAbsErr: %e, AvgRelAbsErr: %e\n",bj,bAvgErr,abs(bAvgErr)/bj); - printf (" AvgRelAbsErr > Epsilon (%e)\n",epsilon); - ierr = 0; - for (j=0; j epsilon) { - ierr++; -#ifdef VERBOSE - if (ierr < 10) { - printf(" array b: index: %ld, expected: %e, observed: %e, relative error: %e\n", - j,bj,b[j],abs((bj-b[j])/bAvgErr)); - } -#endif - } - } - printf(" For array b[], %d errors were found.\n",ierr); - } - if (abs(cAvgErr/cj) > epsilon) { - err++; - printf ("Failed Validation on array c[], AvgRelAbsErr > epsilon (%e)\n",epsilon); - printf (" Expected Value: %e, AvgAbsErr: %e, AvgRelAbsErr: %e\n",cj,cAvgErr,abs(cAvgErr)/cj); - printf (" AvgRelAbsErr > Epsilon (%e)\n",epsilon); - ierr = 0; - for (j=0; j epsilon) { - ierr++; -#ifdef VERBOSE - if (ierr < 10) { - printf(" array c: index: %ld, expected: %e, observed: %e, relative error: %e\n", - j,cj,c[j],abs((cj-c[j])/cAvgErr)); - } -#endif - } - } - printf(" For array c[], %d errors were found.\n",ierr); - } - if (err == 0) { - printf ("Solution Validates: avg error less than %e on all three arrays\n",epsilon); - } -#ifdef VERBOSE - printf ("Results Validation Verbose Results: \n"); - printf (" Expected a(1), b(1), c(1): %f %f %f \n",aj,bj,cj); - printf (" Observed a(1), b(1), c(1): %f %f %f \n",a[1],b[1],c[1]); - printf (" Rel Errors on a, b, c: %e %e %e \n",abs(aAvgErr/aj),abs(bAvgErr/bj),abs(cAvgErr/cj)); -#endif -} - -#ifdef TUNED -/* stubs for "tuned" versions of the kernels */ -void tuned_STREAM_Copy() -{ - ssize_t j; -#pragma omp parallel for - for (j=0; j2*N -B) M times skalar prod => 2*M*N -C) (Matrix vector product of M*L Matrix with an L Vector) N times => 2*M*N*L -D) N times(p times * and p times +/- [with Horner's method]) => 2*N*p - -Number of Read/Write operations -A) Read: 2*N Write: 1 -B) Read: 2*M*N Write: M -C) Read: 2*M*N*L Write: M*N -D) Read: N*p Write: N diff --git a/sheet3/345/.vscode/settings.json b/sheet3/345/.vscode/settings.json deleted file mode 100644 index 48bd760..0000000 --- a/sheet3/345/.vscode/settings.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "files.associations": { - "ostream": "cpp", - "iostream": "cpp" - } -} \ No newline at end of file diff --git a/sheet3/345/Doxyfile b/sheet3/345/Doxyfile deleted file mode 100644 index 58d8e68..0000000 --- a/sheet3/345/Doxyfile +++ /dev/null @@ -1,2563 +0,0 @@ -# Doxyfile 1.8.20 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a double hash (##) is considered a comment and is placed in -# front of the TAG it is preceding. -# -# All text after a single hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists, items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (\" \"). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the configuration -# file that follow. The default is UTF-8 which is also the encoding used for all -# text before the first occurrence of this tag. Doxygen uses libiconv (or the -# iconv built into libc) for the transcoding. See -# https://www.gnu.org/software/libiconv/ for the list of possible encodings. -# The default value is: UTF-8. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by -# double-quotes, unless you are using Doxywizard) that should identify the -# project for which the documentation is generated. This name is used in the -# title of most generated pages and in a few other places. -# The default value is: My Project. - -PROJECT_NAME = Skalar_seq_stl - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. This -# could be handy for archiving the generated documentation or if some version -# control system is used. - -PROJECT_NUMBER = - -# Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a -# quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = - -# With the PROJECT_LOGO tag one can specify a logo or an icon that is included -# in the documentation. The maximum height of the logo should not exceed 55 -# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy -# the logo to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path -# into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If -# left blank the current directory will be used. - -OUTPUT_DIRECTORY = - -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. -# The default value is: NO. - -CREATE_SUBDIRS = NO - -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII -# characters to appear in the names of generated files. If set to NO, non-ASCII -# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode -# U+3044. -# The default value is: NO. - -ALLOW_UNICODE_NAMES = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. -# The default value is: English. - -OUTPUT_LANGUAGE = English - -# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all generated output in the proper direction. -# Possible values are: None, LTR, RTL and Context. -# The default value is: None. - -OUTPUT_TEXT_DIRECTION = None - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member -# descriptions after the members that are listed in the file and class -# documentation (similar to Javadoc). Set to NO to disable this. -# The default value is: YES. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief -# description of a member or function before the detailed description -# -# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. -# The default value is: YES. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator that is -# used to form the text in various listings. Each string in this list, if found -# as the leading text of the brief description, will be stripped from the text -# and the result, after processing the whole list, is used as the annotated -# text. Otherwise, the brief description is used as-is. If left blank, the -# following values are used ($name is automatically replaced with the name of -# the entity):The $name class, The $name widget, The $name file, is, provides, -# specifies, contains, represents, a, an and the. - -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief -# description. -# The default value is: NO. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. -# The default value is: NO. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path -# before files name in the file list and in the header files. If set to NO the -# shortest path that makes the file name unique will be used -# The default value is: YES. - -FULL_PATH_NAMES = YES - -# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. -# Stripping is only done if one of the specified strings matches the left-hand -# part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to -# strip. -# -# Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. -# This tag requires that the tag FULL_PATH_NAMES is set to YES. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the -# path mentioned in the documentation of a class, which tells the reader which -# header file to include in order to use a class. If left blank only the name of -# the header file containing the class definition is used. Otherwise one should -# specify the list of include paths that are normally passed to the compiler -# using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't -# support long names like on DOS, Mac, or CD-ROM. -# The default value is: NO. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) -# The default value is: NO. - -JAVADOC_AUTOBRIEF = NO - -# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line -# such as -# /*************** -# as being the beginning of a Javadoc-style comment "banner". If set to NO, the -# Javadoc-style will behave just like regular comments and it will not be -# interpreted by doxygen. -# The default value is: NO. - -JAVADOC_BANNER = NO - -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) -# The default value is: NO. - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a -# multi-line C++ special comment block (i.e. a block of //! or /// comments) as -# a brief description. This used to be the default behavior. The new default is -# to treat a multi-line C++ comment block as a detailed description. Set this -# tag to YES if you prefer the old behavior instead. -# -# Note that setting this tag to YES also means that rational rose comments are -# not recognized any more. -# The default value is: NO. - -MULTILINE_CPP_IS_BRIEF = NO - -# By default Python docstrings are displayed as preformatted text and doxygen's -# special commands cannot be used. By setting PYTHON_DOCSTRING to NO the -# doxygen's special commands can be used and the contents of the docstring -# documentation blocks is shown as doxygen documentation. -# The default value is: YES. - -PYTHON_DOCSTRING = YES - -# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the -# documentation from any documented member that it re-implements. -# The default value is: YES. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new -# page for each member. If set to NO, the documentation of a member will be part -# of the file/class/namespace that contains it. -# The default value is: NO. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen -# uses this value to replace tabs by spaces in code fragments. -# Minimum value: 1, maximum value: 16, default value: 4. - -TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that act as commands in -# the documentation. An alias has the form: -# name=value -# For example adding -# "sideeffect=@par Side Effects:\n" -# will allow you to put the command \sideeffect (or @sideeffect) in the -# documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines (in the resulting output). You can put ^^ in the value part of an -# alias to insert a newline as if a physical newline was in the original file. -# When you need a literal { or } or , in the value part of an alias you have to -# escape them by means of a backslash (\), this can lead to conflicts with the -# commands \{ and \} for these it is advised to use the version @{ and @} or use -# a double escape (\\{ and \\}) - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources -# only. Doxygen will then generate output that is more tailored for C. For -# instance, some of the names that are used will be different. The list of all -# members will be omitted, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_FOR_C = NO - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or -# Python sources only. Doxygen will then generate output that is more tailored -# for that language. For instance, namespaces will be presented as packages, -# qualified scopes will look different, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources. Doxygen will then generate output that is tailored for Fortran. -# The default value is: NO. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for VHDL. -# The default value is: NO. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Set the OPTIMIZE_OUTPUT_SLICE tag to YES if your project consists of Slice -# sources only. Doxygen will then generate output that is more tailored for that -# language. For instance, namespaces will be presented as modules, types will be -# separated into more groups, etc. -# The default value is: NO. - -OPTIMIZE_OUTPUT_SLICE = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given -# extension. Doxygen has a built-in mapping, but you can override or extend it -# using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, -# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, VHDL, -# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: -# FortranFree, unknown formatted Fortran: Fortran. In the later case the parser -# tries to guess whether the code is fixed or free formatted code, this is the -# default for Fortran type files). For instance to make doxygen treat .inc files -# as Fortran files (default is PHP), and .f files as C (default is Fortran), -# use: inc=Fortran f=C. -# -# Note: For files without extension you can use no_extension as a placeholder. -# -# Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments -# according to the Markdown format, which allows for more readable -# documentation. See https://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in -# case of backward compatibilities issues. -# The default value is: YES. - -MARKDOWN_SUPPORT = YES - -# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up -# to that level are automatically included in the table of contents, even if -# they do not have an id attribute. -# Note: This feature currently applies only to Markdown headings. -# Minimum value: 0, maximum value: 99, default value: 5. -# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. - -TOC_INCLUDE_HEADINGS = 5 - -# When enabled doxygen tries to link words that correspond to documented -# classes, or namespaces to their corresponding documentation. Such a link can -# be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. -# The default value is: YES. - -AUTOLINK_SUPPORT = YES - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. -# The default value is: NO. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. -# The default value is: NO. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. -# The default value is: NO. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate -# getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. -# This will only work if the methods are indeed getting or setting a simple -# type. If this is not the case, or you want to show the methods anyway, you -# should set this option to NO. -# The default value is: YES. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. -# The default value is: NO. - -DISTRIBUTE_GROUP_DOC = NO - -# If one adds a struct or class to a group and this option is enabled, then also -# any nested class or struct is added to the same group. By default this option -# is disabled and one has to add nested compounds explicitly via \ingroup. -# The default value is: NO. - -GROUP_NESTED_COMPOUNDS = NO - -# Set the SUBGROUPING tag to YES to allow class member groups of the same type -# (for instance a group of public functions) to be put as a subgroup of that -# type (e.g. under the Public Functions section). Set it to NO to prevent -# subgrouping. Alternatively, this can be done per class using the -# \nosubgrouping command. -# The default value is: YES. - -SUBGROUPING = YES - -# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions -# are shown inside the group in which they are included (e.g. using \ingroup) -# instead of on a separate page (for HTML and Man pages) or section (for LaTeX -# and RTF). -# -# Note that this feature does not work in combination with -# SEPARATE_MEMBER_PAGES. -# The default value is: NO. - -INLINE_GROUPED_CLASSES = NO - -# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions -# with only public data fields or simple typedef fields will be shown inline in -# the documentation of the scope in which they are defined (i.e. file, -# namespace, or group documentation), provided this scope is documented. If set -# to NO, structs, classes, and unions are shown on a separate page (for HTML and -# Man pages) or section (for LaTeX and RTF). -# The default value is: NO. - -INLINE_SIMPLE_STRUCTS = NO - -# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or -# enum is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically be -# useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. -# The default value is: NO. - -TYPEDEF_HIDES_STRUCT = NO - -# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This -# cache is used to resolve symbols given their name and scope. Since this can be -# an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The -# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range -# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest -# the optimal cache size from a speed point of view. -# Minimum value: 0, maximum value: 9, default value: 0. - -LOOKUP_CACHE_SIZE = 0 - -# The NUM_PROC_THREADS specifies the number threads doxygen is allowed to use -# during processing. When set to 0 doxygen will based this on the number of -# cores available in the system. You can set it explicitly to a value larger -# than 0 to get more control over the balance between CPU load and processing -# speed. At this moment only the input processing can be done using multiple -# threads. Since this is still an experimental feature the default is set to 1, -# which efficively disables parallel processing. Please report any issues you -# encounter. Generating dot graphs in parallel is controlled by the -# DOT_NUM_THREADS setting. -# Minimum value: 0, maximum value: 32, default value: 1. - -NUM_PROC_THREADS = 1 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in -# documentation are documented, even if no documentation was available. Private -# class members and static file members will be hidden unless the -# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. -# Note: This will also disable the warnings about undocumented members that are -# normally produced when WARNINGS is set to YES. -# The default value is: NO. - -EXTRACT_ALL = YES - -# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will -# be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_PRIV_VIRTUAL tag is set to YES, documented private virtual -# methods of a class will be included in the documentation. -# The default value is: NO. - -EXTRACT_PRIV_VIRTUAL = NO - -# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal -# scope will be included in the documentation. -# The default value is: NO. - -EXTRACT_PACKAGE = NO - -# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be -# included in the documentation. -# The default value is: NO. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined -# locally in source files will be included in the documentation. If set to NO, -# only classes defined in header files are included. Does not have any effect -# for Java sources. -# The default value is: YES. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. If set to YES, local methods, -# which are defined in the implementation section but not in the interface are -# included in the documentation. If set to NO, only methods in the interface are -# included. -# The default value is: NO. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base name of -# the file that contains the anonymous namespace. By default anonymous namespace -# are hidden. -# The default value is: NO. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all -# undocumented members inside documented classes or files. If set to NO these -# members will be included in the various overviews, but no documentation -# section is generated. This option has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. If set -# to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. -# The default value is: NO. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend -# declarations. If set to NO, these declarations will be included in the -# documentation. -# The default value is: NO. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any -# documentation blocks found inside the body of a function. If set to NO, these -# blocks will be appended to the function's detailed documentation block. -# The default value is: NO. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation that is typed after a -# \internal command is included. If the tag is set to NO then the documentation -# will be excluded. Set it to YES to include the internal documentation. -# The default value is: NO. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file -# names in lower-case letters. If set to YES, upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# (including Cygwin) and Mac users are advised to set this option to NO. -# The default value is: system dependent. - -CASE_SENSE_NAMES = NO - -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with -# their full class and namespace scopes in the documentation. If set to YES, the -# scope will be hidden. -# The default value is: NO. - -HIDE_SCOPE_NAMES = NO - -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will -# append additional text to a page's title, such as Class Reference. If set to -# YES the compound reference will be hidden. -# The default value is: NO. - -HIDE_COMPOUND_REFERENCE= NO - -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of -# the files that are included by a file in the documentation of that file. -# The default value is: YES. - -SHOW_INCLUDE_FILES = YES - -# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each -# grouped member an include statement to the documentation, telling the reader -# which file to include in order to use the member. -# The default value is: NO. - -SHOW_GROUPED_MEMB_INC = NO - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include -# files with double quotes in the documentation rather than with sharp brackets. -# The default value is: NO. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the -# documentation for inline members. -# The default value is: YES. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the -# (detailed) documentation of file and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. -# The default value is: YES. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief -# descriptions of file, namespace and class members alphabetically by member -# name. If set to NO, the members will appear in declaration order. Note that -# this will also influence the order of the classes in the class list. -# The default value is: NO. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the -# (brief and detailed) documentation of class members so that constructors and -# destructors are listed first. If set to NO the constructors will appear in the -# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. -# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief -# member documentation. -# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting -# detailed member documentation. -# The default value is: NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy -# of group names into alphabetical order. If set to NO the group names will -# appear in their defined order. -# The default value is: NO. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by -# fully-qualified names, including namespaces. If set to NO, the class list will -# be sorted only by class name, not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the alphabetical -# list. -# The default value is: NO. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper -# type resolution of all parameters of a function it will reject a match between -# the prototype and the implementation of a member function even if there is -# only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still -# accept a match between prototype and implementation in such cases. -# The default value is: NO. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo -# list. This list is created by putting \todo commands in the documentation. -# The default value is: YES. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test -# list. This list is created by putting \test commands in the documentation. -# The default value is: YES. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug -# list. This list is created by putting \bug commands in the documentation. -# The default value is: YES. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO) -# the deprecated list. This list is created by putting \deprecated commands in -# the documentation. -# The default value is: YES. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional documentation -# sections, marked by \if ... \endif and \cond -# ... \endcond blocks. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the -# initial value of a variable or macro / define can have for it to appear in the -# documentation. If the initializer consists of more lines than specified here -# it will be hidden. Use a value of 0 to hide initializers completely. The -# appearance of the value of individual variables and macros / defines can be -# controlled using \showinitializer or \hideinitializer command in the -# documentation regardless of this setting. -# Minimum value: 0, maximum value: 10000, default value: 30. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at -# the bottom of the documentation of classes and structs. If set to YES, the -# list will mention the files that were used to generate the documentation. -# The default value is: YES. - -SHOW_USED_FILES = YES - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This -# will remove the Files entry from the Quick Index and from the Folder Tree View -# (if specified). -# The default value is: YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces -# page. This will remove the Namespaces entry from the Quick Index and from the -# Folder Tree View (if specified). -# The default value is: YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command command input-file, where command is the value of the -# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file -# version. For an example see the documentation. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can -# optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. -# -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE -# tag is left empty. - -LAYOUT_FILE = - -# The CITE_BIB_FILES tag can be used to specify one or more bib files containing -# the reference definitions. This must be a list of .bib files. The .bib -# extension is automatically appended if omitted. This requires the bibtex tool -# to be installed. See also https://en.wikipedia.org/wiki/BibTeX for more info. -# For LaTeX the style of the bibliography can be controlled using -# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the -# search path. See also \cite for info how to create references. - -CITE_BIB_FILES = - -#--------------------------------------------------------------------------- -# Configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the -# messages are off. -# The default value is: NO. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES -# this implies that the warnings are on. -# -# Tip: Turn warnings on while writing the documentation. -# The default value is: YES. - -WARNINGS = YES - -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate -# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag -# will automatically be disabled. -# The default value is: YES. - -WARN_IF_UNDOCUMENTED = YES - -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. -# The default value is: YES. - -WARN_IF_DOC_ERROR = YES - -# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that -# are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. If -# EXTRACT_ALL is set to YES then this flag will automatically be disabled. -# The default value is: NO. - -WARN_NO_PARAMDOC = NO - -# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when -# a warning is encountered. -# The default value is: NO. - -WARN_AS_ERROR = NO - -# The WARN_FORMAT tag determines the format of the warning messages that doxygen -# can produce. The string should contain the $file, $line, and $text tags, which -# will be replaced by the file and line number from which the warning originated -# and the warning text. Optionally the format may contain $version, which will -# be replaced by the version of the file (if it could be obtained via -# FILE_VERSION_FILTER) -# The default value is: $file:$line: $text. - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning and error -# messages should be written. If left blank the output is written to standard -# error (stderr). - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# Configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag is used to specify the files and/or directories that contain -# documented source files. You may enter file names like myfile.cpp or -# directories like /usr/src/myproject. Separate the files or directories with -# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING -# Note: If this tag is empty the current directory is searched. - -INPUT = - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses -# libiconv (or the iconv built into libc) for the transcoding. See the libiconv -# documentation (see: https://www.gnu.org/software/libiconv/) for the list of -# possible encodings. -# The default value is: UTF-8. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and -# *.h) to filter out the source-files in the directories. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by doxygen. -# -# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, -# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, -# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, -# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment), -# *.doc (to be provided as doxygen C comment), *.txt (to be provided as doxygen -# C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, -# *.vhdl, *.ucf, *.qsf and *.ice. - -FILE_PATTERNS = *.c \ - *.cc \ - *.cxx \ - *.cpp \ - *.c++ \ - *.d \ - *.java \ - *.ii \ - *.ixx \ - *.ipp \ - *.i++ \ - *.inl \ - *.h \ - *.hh \ - *.hxx \ - *.hpp \ - *.h++ \ - *.idl \ - *.odl \ - *.cs \ - *.php \ - *.php3 \ - *.inc \ - *.m \ - *.markdown \ - *.md \ - *.mm \ - *.dox \ - *.py \ - *.f90 \ - *.f \ - *.for \ - *.vhd \ - *.vhdl - -# The RECURSIVE tag can be used to specify whether or not subdirectories should -# be searched for input files as well. -# The default value is: NO. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should be -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. -# -# Note that relative paths are relative to the directory from which doxygen is -# run. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. -# The default value is: NO. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or directories -# that contain example code fragments that are included (see the \include -# command). - -EXAMPLE_PATH = - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and -# *.h) to filter out the source-files in the directories. If left blank all -# files are included. - -EXAMPLE_PATTERNS = * - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude commands -# irrespective of the value of the RECURSIVE tag. -# The default value is: NO. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or directories -# that contain images that are to be included in the documentation (see the -# \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command: -# -# -# -# where is the value of the INPUT_FILTER tag, and is the -# name of an input file. Doxygen will then use the output that the filter -# program writes to standard output. If FILTER_PATTERNS is specified, this tag -# will be ignored. -# -# Note that the filter must not add or remove lines; it is applied before the -# code is scanned, but not when the output code is generated. If lines are added -# or removed, the anchors will not be placed correctly. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. The filters are a list of the form: pattern=filter -# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how -# filters are used. If the FILTER_PATTERNS tag is empty or if none of the -# patterns match the file name, INPUT_FILTER is applied. -# -# Note that for custom extensions or not directly supported extensions you also -# need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will also be used to filter the input files that are used for -# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES). -# The default value is: NO. - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and -# it is also possible to disable source filtering for a specific pattern using -# *.ext= (so without naming a filter). -# This tag requires that the tag FILTER_SOURCE_FILES is set to YES. - -FILTER_SOURCE_PATTERNS = - -# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that -# is part of the input, its contents will be placed on the main page -# (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. - -USE_MDFILE_AS_MAINPAGE = - -#--------------------------------------------------------------------------- -# Configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will be -# generated. Documented entities will be cross-referenced with these sources. -# -# Note: To get rid of all source code in the generated output, make sure that -# also VERBATIM_HEADERS is set to NO. -# The default value is: NO. - -SOURCE_BROWSER = YES - -# Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. -# The default value is: NO. - -INLINE_SOURCES = YES - -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any -# special comment blocks from generated source code fragments. Normal C, C++ and -# Fortran comments will always remain visible. -# The default value is: YES. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES then for each documented -# entity all documented functions referencing it will be listed. -# The default value is: NO. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES then for each documented function -# all documented entities called/used by that function will be listed. -# The default value is: NO. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set -# to YES then the hyperlinks from functions in REFERENCES_RELATION and -# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will -# link to the documentation. -# The default value is: YES. - -REFERENCES_LINK_SOURCE = YES - -# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the -# source code will show a tooltip with additional information such as prototype, -# brief description and links to the definition and documentation. Since this -# will make the HTML file larger and loading of large files a bit slower, you -# can opt to disable this feature. -# The default value is: YES. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -SOURCE_TOOLTIPS = YES - -# If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in -# source browser. The htags tool is part of GNU's global source tagging system -# (see https://www.gnu.org/software/global/global.html). You will need version -# 4.8.6 or higher. -# -# To use it do the following: -# - Install the latest version of global -# - Enable SOURCE_BROWSER and USE_HTAGS in the configuration file -# - Make sure the INPUT points to the root of the source tree -# - Run doxygen as normal -# -# Doxygen will invoke htags (and that will in turn invoke gtags), so these -# tools must be available from the command line (i.e. in the search path). -# -# The result: instead of the source browser generated by doxygen, the links to -# source code will now point to the output of htags. -# The default value is: NO. -# This tag requires that the tag SOURCE_BROWSER is set to YES. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a -# verbatim copy of the header file for each class for which an include is -# specified. Set to NO to disable this. -# See also: Section \class. -# The default value is: YES. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# Configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all -# compounds will be generated. Enable this if the project contains a lot of -# classes, structs, unions or interfaces. -# The default value is: YES. - -ALPHABETICAL_INDEX = YES - -# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in -# which the alphabetical index list will be split. -# Minimum value: 1, maximum value: 20, default value: 5. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. -# This tag requires that the tag ALPHABETICAL_INDEX is set to YES. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output -# The default value is: YES. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a -# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of -# it. -# The default directory is: html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each -# generated HTML page (for example: .htm, .php, .asp). -# The default value is: .html. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a -# standard header. -# -# To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. -# the setting GENERATE_TREEVIEW). It is highly recommended to start with a -# default header using -# doxygen -w html new_header.html new_footer.html new_stylesheet.css -# YourConfigFile -# and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally -# uses. -# Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description -# of the possible markers and block names see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard -# footer. See HTML_HEADER for more information on how to generate a default -# footer and what special commands can be used inside the footer. See also -# section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style -# sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. -# See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. -# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as -# it is more robust and this tag (HTML_STYLESHEET) will in the future become -# obsolete. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_STYLESHEET = - -# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined -# cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. -# This is preferred over using HTML_STYLESHEET since it does not replace the -# standard style sheet and is therefore more robust against future updates. -# Doxygen will copy the style sheet files to the output directory. -# Note: The order of the extra style sheet files is of importance (e.g. the last -# style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_STYLESHEET = - -# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or -# other source files which should be copied to the HTML output directory. Note -# that these files will be copied to the base HTML output directory. Use the -# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these -# files. In the HTML_STYLESHEET file, use the file name only. Also note that the -# files will be copied as-is; there are no commands or markers available. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_EXTRA_FILES = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen -# will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see -# https://en.wikipedia.org/wiki/Hue for more information. For instance the value -# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 -# purple, and 360 is red again. -# Minimum value: 0, maximum value: 359, default value: 220. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A -# value of 255 will produce the most vivid colors. -# Minimum value: 0, maximum value: 255, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the -# luminance component of the colors in the HTML output. Values below 100 -# gradually make the output lighter, whereas values above 100 make the output -# darker. The value divided by 100 is the actual gamma applied, so 80 represents -# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not -# change the gamma. -# Minimum value: 40, maximum value: 240, default value: 80. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to YES can help to show when doxygen was last run and thus if the -# documentation is up to date. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = YES - -# If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML -# documentation will contain a main index with vertical navigation menus that -# are dynamically created via JavaScript. If disabled, the navigation index will -# consists of multiple levels of tabs that are statically embedded in every HTML -# page. Disable this option to support browsers that do not have JavaScript, -# like the Qt help browser. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_MENUS = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_DYNAMIC_SECTIONS = NO - -# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries -# shown in the various tree structured indices initially; the user can expand -# and collapse entries dynamically later on. Doxygen will expand the tree to -# such a level that at most the specified number of entries are visible (unless -# a fully collapsed tree already exceeds this amount). So setting the number of -# entries 1 will produce a full collapsed tree by default. 0 is a special value -# representing an infinite number of entries and will result in a full expanded -# tree by default. -# Minimum value: 0, maximum value: 9999, default value: 100. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_INDEX_NUM_ENTRIES = 100 - -# If the GENERATE_DOCSET tag is set to YES, additional index files will be -# generated that can be used as input for Apple's Xcode 3 integrated development -# environment (see: https://developer.apple.com/xcode/), introduced with OSX -# 10.5 (Leopard). To create a documentation set, doxygen will generate a -# Makefile in the HTML output directory. Running make will produce the docset in -# that directory and running make install will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at -# startup. See https://developer.apple.com/library/archive/featuredarticles/Doxy -# genXcode/_index.html for more information. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_DOCSET = NO - -# This tag determines the name of the docset feed. A documentation feed provides -# an umbrella under which multiple documentation sets from a single provider -# (such as a company or product suite) can be grouped. -# The default value is: Doxygen generated docs. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# This tag specifies a string that should uniquely identify the documentation -# set bundle. This should be a reverse domain-name style string, e.g. -# com.mycompany.MyDocSet. Doxygen will append .docset to the name. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. -# The default value is: org.doxygen.Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher. -# The default value is: Publisher. -# This tag requires that the tag GENERATE_DOCSET is set to YES. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three -# additional HTML index files: index.hhp, index.hhc, and index.hhk. The -# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: https://www.microsoft.com/en-us/download/details.aspx?id=21138) on -# Windows. -# -# The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML -# files are now used as the Windows 98 help format, and will replace the old -# Windows help format (.hlp) on all Windows platforms in the future. Compressed -# HTML files also contain an index, a table of contents, and you can search for -# words in the documentation. The HTML workshop also contains a viewer for -# compressed HTML files. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_HTMLHELP = NO - -# The CHM_FILE tag can be used to specify the file name of the resulting .chm -# file. You can add a path in front of the file if the result should not be -# written to the html output directory. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_FILE = - -# The HHC_LOCATION tag can be used to specify the location (absolute path -# including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. -# The file has to be specified with full path. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -HHC_LOCATION = - -# The GENERATE_CHI flag controls if a separate .chi index file is generated -# (YES) or that it should be included in the main .chm file (NO). -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -GENERATE_CHI = NO - -# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc) -# and project file content. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -CHM_INDEX_ENCODING = - -# The BINARY_TOC flag controls whether a binary table of contents is generated -# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it -# enables the Previous and Next buttons. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members to -# the table of contents of the HTML help documentation and to the tree view. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTMLHELP is set to YES. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that -# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help -# (.qch) of the generated HTML documentation. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify -# the file name of the resulting .qch file. The path specified is relative to -# the HTML output folder. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help -# Project output. For more information please see Qt Help Project / Namespace -# (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace). -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt -# Help Project output. For more information please see Qt Help Project / Virtual -# Folders (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual- -# folders). -# The default value is: doc. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_VIRTUAL_FOLDER = doc - -# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom -# filter to add. For more information please see Qt Help Project / Custom -# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see Qt Help Project / Custom -# Filters (see: https://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom- -# filters). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's filter section matches. Qt Help Project / Filter Attributes (see: -# https://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes). -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHP_SECT_FILTER_ATTRS = - -# The QHG_LOCATION tag can be used to specify the location of Qt's -# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the -# generated .qhp file. -# This tag requires that the tag GENERATE_QHP is set to YES. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be -# generated, together with the HTML files, they form an Eclipse help plugin. To -# install this plugin and make it available under the help contents menu in -# Eclipse, the contents of the directory containing the HTML and XML files needs -# to be copied into the plugins directory of eclipse. The name of the directory -# within the plugins directory should be the same as the ECLIPSE_DOC_ID value. -# After copying Eclipse needs to be restarted before the help appears. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the Eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have this -# name. Each documentation set should have its own identifier. -# The default value is: org.doxygen.Project. -# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# If you want full control over the layout of the generated HTML pages it might -# be necessary to disable the index and replace it with your own. The -# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top -# of each HTML page. A value of NO enables the index and the value YES disables -# it. Since the tabs in the index contain the same information as the navigation -# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -DISABLE_INDEX = NO - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. If the tag -# value is set to YES, a side panel will be generated containing a tree-like -# index structure (just like the one that is generated for HTML Help). For this -# to work a browser that supports JavaScript, DHTML, CSS and frames is required -# (i.e. any modern browser). Windows users are probably better off using the -# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -GENERATE_TREEVIEW = NO - -# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. -# -# Note that a value of 0 will completely suppress the enum values from appearing -# in the overview section. -# Minimum value: 0, maximum value: 20, default value: 4. -# This tag requires that the tag GENERATE_HTML is set to YES. - -ENUM_VALUES_PER_LINE = 4 - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used -# to set the initial width (in pixels) of the frame in which the tree is shown. -# Minimum value: 0, maximum value: 1500, default value: 250. -# This tag requires that the tag GENERATE_HTML is set to YES. - -TREEVIEW_WIDTH = 250 - -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to -# external symbols imported via tag files in a separate window. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -EXT_LINKS_IN_WINDOW = NO - -# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg -# tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see -# https://inkscape.org) to generate formulas as SVG images instead of PNGs for -# the HTML output. These images will generally look nicer at scaled resolutions. -# Possible values are: png (the default) and svg (looks nicer but requires the -# pdf2svg or inkscape tool). -# The default value is: png. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_FORMULA_FORMAT = png - -# Use this tag to change the font size of LaTeX formulas included as images in -# the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML -# output directory to force them to be regenerated. -# Minimum value: 8, maximum value: 50, default value: 10. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANSPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - -# The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands -# to create new LaTeX commands to be used in formulas as building blocks. See -# the section "Including formulas" for details. - -FORMULA_MACROFILE = - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see -# https://www.mathjax.org) which uses client side JavaScript for the rendering -# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX -# installed or if you want to formulas look prettier in the HTML output. When -# enabled you may also need to install MathJax separately and configure the path -# to it using the MATHJAX_RELPATH option. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -USE_MATHJAX = YES - -# When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/latest/output.html) for more details. -# Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. -# The default value is: HTML-CSS. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_FORMAT = HTML-CSS - -# When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from https://www.mathjax.org before deployment. -# The default value is: https://cdn.jsdelivr.net/npm/mathjax@2. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest - -# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax -# extension names that should be enabled during MathJax rendering. For example -# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_EXTENSIONS = - -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an -# example see the documentation. -# This tag requires that the tag USE_MATHJAX is set to YES. - -MATHJAX_CODEFILE = - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and -# should work on any modern browser. Note that when using HTML help -# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) -# there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then -# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to -# search using the keyboard; to jump to the search box use + S -# (what the is depends on the OS and browser, but it is typically -# , /