      *****************************************************************
      *                                                               *
      *                    OptiVec for Visual C++                     *
      *                                                               *
      *                         Demo Version 8                        *
      *****************************************************************

Contents:
     1. Introduction
     2. System requirements
     3. Installation
     4. Running the examples
     5. Documentation
     6. What's New?
     7. Copyright
     8. Registered Version

1. Introduction
---------------
Use vector functions instead of loops - if it matters to you how fast and
how accurately your data are processed!
The largest portion of almost all programs processing numerical data
consists of loops. Replace these loops by the specialized vector
and matrix functions of OptiVec, and exploit all the advantages of
vectorized programming:

- OptiVec was almost entirely written in Assembly language. The result is a
  highly optimized and numerically accurate code, running 2-3 times faster
  than compiled loops.

- fully vectorized forms of all operators and functions of the language
  C/C++ for all integer and floating-point (including complex) data types

- Additionally many other real and complex math functions, statistics,
  analysis, FFT techniques, graphics - in total more than 3000!

- Simple and logical syntax, for example

  "VF_exp( Y, X, size );"      for Y[i] = exp( X[i] ) with "float" arrays,
  "VD_FFT( Y, X, size, 1 );"   for double-precision forward FFT
  "ME_mulM( MZ, MX, MY, htX, lenX, lenY );"
                               for extended-precision matrix multiplication

2. System requirements
----------------------
This version of OptiVec is designed for PC computers, running under
32-bit or 64-bit Windows and equipped at least with an AMD64x2 or
Intel Core2Duo CPU (the 32-bit libraries are back-compatible to 
Pentium / Athlon).

This package includes the libraries to be used  with the 
Microsoft Visual C++ compiler series (all versions of Visual Studio, 
down-compatible until VS 2005), 32-bit and/or 64-bit.

If you need versions for other compilers, please visit 
https://www.optivec.com/download 

At present, OptiVec is available for the following target compilers:
Windows:
- C++ Builder  (Embarcadero RAD Studio; formerly Borland C++)
- Microsoft Visual C++
- GCC, the GNU Compiler Collection
- LLVM Clang
- Delphi (Embarcadero RAD Studio)
- Lazarus / FreePascal
Linux:
- GCC or CLang


3. Installation
---------------
a) To install the Demo version of OptiVec, you need to execute 
   INSTALL.EXE,  contained in the ZIP file you downloaded. Only then,
   programs using the OptiVec library can run. It is not possible to
   just copy the .lib and .h  files, e.g., from another computer.

b) In case you wish to install OptiVec for several target compilers
   (e.g., Visual Studio and RAD Studio or GCC), these versions may be 
   installed one after the other. You are free to choose the same 
   directory or different directories, just as you like.

c) Windows has a habit of sometimes warning users after the installation
   of third-party products: "Setup possibly incomplete". If INSTALL.EXE
   did finish and displayed this README.TXT file, you know that the
   installation is complete.

d) After you completed the installation, you must set the search paths for
   include-files and for libraries according to your OptiVec directory choice:
   Say, your OptiVec directory is C:\OPTIVEC. Then, these additional search 
   paths are:
   C:\OPTIVEC\INCLUDE      for the include-files.
   C:\OPTIVEC\LIB          for the libraries.

   Add these paths to the standard settings in the menues
   "Project / Settings / Configuration Settings / C/C++ / General / Additional include directories" and 
   "Project / Settings / Configuration Settings / Linker / General / Additional directories" 

e) You always have to include two OptiVec libraries in your project. 
   One of these libraries is an interface or "base" library and specific for the 
   individual version of the target COMPILER. The other contains the bulk of the 
   high-performance functions and is specific for the target PROCESSOR. Details are
   described below for the example files. 
   For MS Visual C++, you also have to include the Windows API import library:
   In the menu   Project / (Configuration) Settings / Linker /
   Object and Library modules,
   you must add    user32.lib  and shell32.lib (if they are not yet there).
   Otherwise you would get linker errors like
   LNK2001: Unresolved external symbol __imp__MessageBoxA@16??

f) Each new release of Visual Studio comes with its own specific version of
   the runtime DLL. Consequently, in the configurations with DYNAMIC runtime
   (code generation options /MDd or /MD), any third-party library has to link
   exactly to that version of the runtime. This is why you find one set of
   OptiVec base libraries for each version of Visual Studio.
   Only if you use the STATIC runtime (code generation options /MTd or /MT), 
   one and the same OptiVec base library for a given configuration can be 
   used with several versions of Visual Studio. The series is broken only
   between VS 2013 and VS 2015 and, once again, between VS 2015 and VS 2017.
   There is a certain inconsistency in the description of the configurations
   in Visual Studio: The default configurations "Debug" and "Release" use the
   runtime library and MFC as DLL. This means that they are actually the 
   "Debug DLL" and "Release DLL" configurations.
   With these explanations, here are the libraries you have to choose:
   1. Configurations with STATIC VS runtime ("DebugStatic" configuration 
      in the examples):
                                 64-bit Debug         32-bit Debug
      VS 2026 down to VS 2017    OVVCx64MTD.LIB       OVVCMTD.LIB
      VS 2015                    OVVC14x64MTD.LIB     OVVC14MTD.LIB
      VS 2013 down to VS 2005    OVVC8_12x64MTD.LIB   OVVC8_12MTD.LIB

   2. Configurations with VS runtime as DLL:
                 64-bit Debug         32-bit Debug
      VS 2026    OVVC18x64MDD.LIB     OVVC18MDD.LIB
      VS 2022    OVVC17x64MDD.LIB     OVVC17MDD.LIB
      VS 2019    OVVC16x64MDD.LIB     OVVC16MDD.LIB
      VS 2017    OVVC15x64MDD.LIB     OVVC15MDD.LIB
      VS 2015    OVVC14x64MDD.LIB     OVVC14MDD.LIB
      VS 2013    OVVC12x64MDD.LIB     OVVC12MDD.LIB
      VS 2012    OVVC11x64MDD.LIB     OVVC11MDD.LIB
      VS 2010    *                    OVVC10MDD.LIB
      VS 2008    *                    OVVC9MDD.LIB
      VS 2005    OVVC8x64MDD.LIB      OVVC8MDD.LIB

      * The 64-bit libraries to be linked with the dynamic Runtime are 
        not available for VS 2008 and VS 2010.
        
4. Running the examples
-----------------------

Check your installation by compiling and running the included demo files.
Be sure to select the project files most appropriate for your compiler 
version, as described below.
If you build your own projects and get compiler errors like "Cannot open 
include file ...", or a linker error "Unresolved external", the library 
and include paths are probably not set correctly or the libraries are not 
properly included in your project.

Depending on your hardware, you have the choice between two versions of
the OptiVec libraries: Either the general-purpose and debug library,
running on all CPUs, even down to 486DX or AMD K6 / Athlon.
Or the multi-core optimized version, requiring at least an AMD 64 x2
or a Core2 Duo processor.
See chapter 1.1.2 of HANDBOOK.HTM for details about the various libraries.

 -  open the project map  VDEMO_VS20??.sln  (32-bit)  
    or VDEMO64_VS20??.sln (64-bit)
    (e.g., VS 2026 32-bit:   VDEMO_VS2026.sln, 
           VS 2015 64-bit:   VDEMO64_VS2015.sln, etc.)
    Depending on the exact version, Visual Studio may have to convert 
    this project map and its parts into a newer format. When prompted, 
    answer "Yes to all" to accept this automatic conversion.

 -  The project map contains four projects:
    VDEMO,  FITDEMO,   CDEMO,  and MANDEL.

    VDEMO      gives a general introduction into OptiVec vector functions,
    VSpeedDemo demonstrates the speed-up of mathematical functions by OptiVec,
    FITDEMO    demonstrates data fitting with OptiVec, 
    CDEMO      shows how to use CMATH functions for complex-number applications,
    MANDEL     shows how a Mandelbrodt plot can be coded with CMATH
              (actually, this is not the original Mandelbrodt, but a modified formula
               with several free parameters to play with.)

    Compile and run all four of them separately.
    

5. Documentation
----------------
The full OptiVec documentation is to be found in the files
HANDBOOK.HTM, FUNCREF.HTM, MATRIX.HTM, and CMATH.HTM to be read with
an HTML browser like Edge, Chrome, or Opera.
Some older browser versions may crash when loading large HTML files 
like FUNCREF.HTM. If that happens, we recommend to use a more recent
browser version or the online documentation on https://www.optivec.com.


6. What's New?
--------------
Version 8.4.x:
  - Support for Visual Studio 2026
  - new functions:
    V?_isconst:  returns 1 (True), if all elements are equal
    V?_subvector_neg: inverts the sign of all elements of a subvector
	inverse hyperbolic functions, both real and complex:
	   VF_asinh, VF_acosh, VF_atanh
	   cf_asinh, cf_acosh, cf_atanh  (scalar)
	   VCF_asinh, VCF_acosh, VCF_atanh (vector)
	   and their double- and extended-precision analogues

  - 64-bit only:
    - New "10", "10M", and "10C" libraries in the Registered Version.
      They have the same minimum requirements as the "9", "9M" and "9C"
      libraries, but they check for the availability of AVX512 and
      use it, if possible.

    - Complete overhaul of the double-precision mathematical and statistical
      functions. The new implementations are much faster.
    
    - Overhaul of most complex-valued math functions

    - in the CMATH part:
      Faster implementation of most cf_ and cd_ functions

For information on previous versions, see VersionHistory.txt.


7. Copyright
------------
The copyright owner of this product as a whole and of all its constituent
parts is
         OptiCode
         Dr. Martin Sander Software Development
         Brahmsstr. 6
         D-32756 Detmold
         Germany
         e-mail: optivec@gmx.de

This Demo version of OptiVec is freely distributable in unchanged form.
For the distribution of applications created using OptiVec, you need the
registered version. The detailed licence terms are described in chapter 1.2
of the file HANDBOOK.HTM.


8. Registered Version
---------------------
If you like OptiVec and decide to use it, please be fair and register.
The registered version

-  has individually optimized libraries for special high-performance
   techniques and for various degrees of processor backward-compatibility:

      "P10" (up-to-date 64-bit processors; will work down to
            Intel Core i Haswell+, AMD Steamroller+, but not Celeron etc.!):
            highest performance through AVX512 instructions, if available;
            if AVX512 is not avilable, AVX and AVX2 are employed.
      "P9" (will work down to Intel Core i Haswell+, AMD Steamroller+,
            but not Celeron etc.!):
            high performance through AVX and AVX2 instructions 
      "P8"  (Core2xxx+, AMD64x2+):
            uses SSE, SSE2, and SSE3 commands
      "P4", units using the FPU for maximum precision and
            safety of floating-point operations, back-compatible 
            to 486DX/Pentium/Athlon (32-bit only) 
      "Multi-core" (multi-core processors or multi-processor configurations):
            auto-threading libraries, gaining speed by distributing the work-
            load over the available processor cores
      "CUDA" (CUDA-enabled nVidia graphics card):
            libraries to be used on systems with an installed CUDA device,
            yielding highest performance for large vectors and matrices
      "Dimension-consistency debug" (32-bit: only P4;  64-bit: only P8).


-  entitles you to two years of free updates
   (by downloading from our web site)

-  costs:
                                 single-compiler         master licence for all
                                   licence                supported compilers         
      commercial licence         EUR  199.00                 EUR 299.00
      educational licence        EUR   99.00                 EUR 149.00

The above prices include 19% German VAT.
If you are ordering from outside the EU, or if you have a European VAT ID,
you are exempt from German VAT, and it will be deduced from your bill,
but you may have to pay your local VAT and/or import duties according to
local laws.

See https://www.optivec.com/order  for ordering options and volume discounts.     


    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *

Copyright (C) OptiCode - Dr. Martin Sander Software Dev. 1996-2026
