kopia lustrzana https://github.com/Dsplib/libdspl-2.0
addded documenation for array function and complex
rodzic
4ebf6f0df4
commit
8df0c8fa66
332
dox/doxyfile_ru
332
dox/doxyfile_ru
|
@ -1,4 +1,4 @@
|
|||
# Doxyfile 1.8.15
|
||||
# Doxyfile 1.8.10
|
||||
|
||||
# This file describes the settings to be used by the documentation system
|
||||
# doxygen (www.doxygen.org) for a project.
|
||||
|
@ -17,11 +17,11 @@
|
|||
# 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.
|
||||
# This tag specifies the encoding used for all characters in the config 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 http://www.gnu.org/software/libiconv
|
||||
# for the list of possible encodings.
|
||||
# The default value is: UTF-8.
|
||||
|
||||
DOXYFILE_ENCODING = UTF-8
|
||||
|
@ -32,13 +32,13 @@ DOXYFILE_ENCODING = UTF-8
|
|||
# title of most generated pages and in a few other places.
|
||||
# The default value is: My Project.
|
||||
|
||||
PROJECT_NAME = libdspl-2.0
|
||||
PROJECT_NAME =
|
||||
|
||||
# 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 =
|
||||
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
|
||||
|
@ -93,14 +93,6 @@ ALLOW_UNICODE_NAMES = YES
|
|||
|
||||
OUTPUT_LANGUAGE = Russian
|
||||
|
||||
# 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.
|
||||
|
@ -170,7 +162,7 @@ FULL_PATH_NAMES = YES
|
|||
# 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 =
|
||||
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
|
||||
|
@ -179,7 +171,7 @@ STRIP_FROM_PATH =
|
|||
# specify the list of include paths that are normally passed to the compiler
|
||||
# using the -I flag.
|
||||
|
||||
STRIP_FROM_INC_PATH =
|
||||
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
|
||||
|
@ -244,20 +236,15 @@ TAB_SIZE = 2
|
|||
# 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 \\})
|
||||
# newlines.
|
||||
|
||||
ALIASES =
|
||||
ALIASES =
|
||||
|
||||
# This tag can be used to specify a number of word-keyword mappings (TCL only).
|
||||
# A mapping has the form "name=value". For example adding "class=itcl::class"
|
||||
# will allow you to use the command class in the itcl::class meaning.
|
||||
|
||||
TCL_SUBST =
|
||||
TCL_SUBST =
|
||||
|
||||
# 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
|
||||
|
@ -287,37 +274,28 @@ OPTIMIZE_FOR_FORTRAN = 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,
|
||||
# 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), VHDL, tcl. 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.
|
||||
# C#, C, C++, D, PHP, Objective-C, Python, 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), VHDL. 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 =
|
||||
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.
|
||||
# documentation. See http://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.
|
||||
|
@ -325,15 +303,6 @@ EXTENSION_MAPPING =
|
|||
|
||||
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: 0.
|
||||
# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
|
||||
|
||||
TOC_INCLUDE_HEADINGS = 0
|
||||
|
||||
# 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
|
||||
|
@ -359,7 +328,7 @@ BUILTIN_STL_SUPPORT = 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
|
||||
# http://www.riverbankcomputing.co.uk/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.
|
||||
|
@ -670,7 +639,7 @@ GENERATE_DEPRECATEDLIST= YES
|
|||
# sections, marked by \if <section_label> ... \endif and \cond <section_label>
|
||||
# ... \endcond blocks.
|
||||
|
||||
ENABLED_SECTIONS =
|
||||
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
|
||||
|
@ -712,7 +681,7 @@ SHOW_NAMESPACES = YES
|
|||
# by doxygen. Whatever the program writes to standard output is used as the file
|
||||
# version. For an example see the documentation.
|
||||
|
||||
FILE_VERSION_FILTER =
|
||||
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
|
||||
|
@ -725,17 +694,17 @@ FILE_VERSION_FILTER =
|
|||
# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
|
||||
# tag is left empty.
|
||||
|
||||
LAYOUT_FILE =
|
||||
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.
|
||||
# to be installed. See also http://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 =
|
||||
CITE_BIB_FILES =
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to warning and progress messages
|
||||
|
@ -775,18 +744,11 @@ 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.
|
||||
# parameter documentation, but not about the absence of documentation.
|
||||
# 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
|
||||
|
@ -801,7 +763,7 @@ WARN_FORMAT = "$file:$line: $text"
|
|||
# messages should be written. If left blank the output is written to standard
|
||||
# error (stderr).
|
||||
|
||||
WARN_LOGFILE =
|
||||
WARN_LOGFILE =
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the input files
|
||||
|
@ -824,7 +786,7 @@ INPUT = ru \
|
|||
# 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
|
||||
# documentation (see: http://www.gnu.org/software/libiconv) for the list of
|
||||
# possible encodings.
|
||||
# The default value is: UTF-8.
|
||||
|
||||
|
@ -841,8 +803,8 @@ INPUT_ENCODING = UTF-8
|
|||
# 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, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,
|
||||
# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice.
|
||||
# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.f90, *.f, *.for, *.tcl, *.vhd,
|
||||
# *.vhdl, *.ucf, *.qsf, *.as and *.js.
|
||||
|
||||
FILE_PATTERNS = *.c \
|
||||
*.cc \
|
||||
|
@ -902,7 +864,7 @@ RECURSIVE = YES
|
|||
# Note that relative paths are relative to the directory from which doxygen is
|
||||
# run.
|
||||
|
||||
EXCLUDE =
|
||||
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
|
||||
|
@ -918,7 +880,7 @@ EXCLUDE_SYMLINKS = NO
|
|||
# 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 =
|
||||
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
|
||||
|
@ -929,7 +891,7 @@ EXCLUDE_PATTERNS =
|
|||
# Note that the wildcards are matched against the file with absolute path, so to
|
||||
# exclude all test directories use the pattern */test/*
|
||||
|
||||
EXCLUDE_SYMBOLS =
|
||||
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
|
||||
|
@ -975,12 +937,8 @@ IMAGE_PATH = ru/img \
|
|||
# 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 =
|
||||
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
|
||||
|
@ -988,12 +946,8 @@ INPUT_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 =
|
||||
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
|
||||
|
@ -1008,14 +962,14 @@ FILTER_SOURCE_FILES = NO
|
|||
# *.ext= (so without naming a filter).
|
||||
# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
|
||||
|
||||
FILTER_SOURCE_PATTERNS =
|
||||
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 =
|
||||
USE_MDFILE_AS_MAINPAGE =
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to source browsing
|
||||
|
@ -1044,7 +998,7 @@ INLINE_SOURCES = NO
|
|||
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.
|
||||
# function all documented functions referencing it will be listed.
|
||||
# The default value is: NO.
|
||||
|
||||
REFERENCED_BY_RELATION = YES
|
||||
|
@ -1076,12 +1030,12 @@ 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
|
||||
# (see http://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
|
||||
# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
|
||||
# - Make sure the INPUT points to the root of the source tree
|
||||
# - Run doxygen as normal
|
||||
#
|
||||
|
@ -1109,7 +1063,7 @@ VERBATIM_HEADERS = YES
|
|||
# rich C++ code for which doxygen's built-in parser lacks the necessary type
|
||||
# information.
|
||||
# Note: The availability of this option depends on whether or not doxygen was
|
||||
# generated with the -Duse_libclang=ON option for CMake.
|
||||
# compiled with the --with-libclang option.
|
||||
# The default value is: NO.
|
||||
|
||||
CLANG_ASSISTED_PARSING = NO
|
||||
|
@ -1120,17 +1074,7 @@ CLANG_ASSISTED_PARSING = NO
|
|||
# specified with INPUT and INCLUDE_PATH.
|
||||
# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
|
||||
|
||||
CLANG_OPTIONS =
|
||||
|
||||
# If clang assisted parsing is enabled you can provide the clang parser with the
|
||||
# path to the compilation database (see:
|
||||
# http://clang.llvm.org/docs/HowToSetupToolingForLLVM.html) used when the files
|
||||
# were built. This is equivalent to specifying the "-p" option to a clang tool,
|
||||
# such as clang-check. These options will then be passed to the parser.
|
||||
# Note: The availability of this option depends on whether or not doxygen was
|
||||
# generated with the -Duse_libclang=ON option for CMake.
|
||||
|
||||
CLANG_DATABASE_PATH =
|
||||
CLANG_OPTIONS =
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the alphabetical class index
|
||||
|
@ -1156,7 +1100,7 @@ COLS_IN_ALPHA_INDEX = 5
|
|||
# while generating the index headers.
|
||||
# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
|
||||
|
||||
IGNORE_PREFIX =
|
||||
IGNORE_PREFIX =
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the HTML output
|
||||
|
@ -1235,7 +1179,7 @@ HTML_STYLESHEET = doxy_stylesheet.css
|
|||
# list). For an example see the documentation.
|
||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||
|
||||
HTML_EXTRA_STYLESHEET =
|
||||
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
|
||||
|
@ -1245,12 +1189,12 @@ HTML_EXTRA_STYLESHEET =
|
|||
# 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 =
|
||||
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
|
||||
# http://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.
|
||||
|
@ -1286,17 +1230,6 @@ HTML_COLORSTYLE_GAMMA = 80
|
|||
|
||||
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.
|
||||
|
@ -1320,13 +1253,13 @@ 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
|
||||
# environment (see: http://developer.apple.com/tools/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.
|
||||
# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
|
||||
# for more information.
|
||||
# The default value is: NO.
|
||||
# This tag requires that the tag GENERATE_HTML is set to YES.
|
||||
|
||||
|
@ -1365,7 +1298,7 @@ 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
|
||||
# (see: http://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
|
||||
|
@ -1385,7 +1318,7 @@ GENERATE_HTMLHELP = NO
|
|||
# written to the html output directory.
|
||||
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
|
||||
|
||||
CHM_FILE =
|
||||
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,
|
||||
|
@ -1393,7 +1326,7 @@ CHM_FILE =
|
|||
# The file has to be specified with full path.
|
||||
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
|
||||
|
||||
HHC_LOCATION =
|
||||
HHC_LOCATION =
|
||||
|
||||
# The GENERATE_CHI flag controls if a separate .chi index file is generated
|
||||
# (YES) or that it should be included in the master .chm file (NO).
|
||||
|
@ -1406,7 +1339,7 @@ GENERATE_CHI = NO
|
|||
# and project file content.
|
||||
# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
|
||||
|
||||
CHM_INDEX_ENCODING =
|
||||
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
|
||||
|
@ -1437,11 +1370,11 @@ GENERATE_QHP = NO
|
|||
# the HTML output folder.
|
||||
# This tag requires that the tag GENERATE_QHP is set to YES.
|
||||
|
||||
QCH_FILE =
|
||||
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: http://doc.qt.io/archives/qt-4.8/qthelpproject.html#namespace).
|
||||
# (see: http://qt-project.org/doc/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.
|
||||
|
||||
|
@ -1449,7 +1382,7 @@ 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: http://doc.qt.io/archives/qt-4.8/qthelpproject.html#virtual-
|
||||
# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
|
||||
# folders).
|
||||
# The default value is: doc.
|
||||
# This tag requires that the tag GENERATE_QHP is set to YES.
|
||||
|
@ -1458,33 +1391,33 @@ 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: http://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-
|
||||
# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
|
||||
# filters).
|
||||
# This tag requires that the tag GENERATE_QHP is set to YES.
|
||||
|
||||
QHP_CUST_FILTER_NAME =
|
||||
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: http://doc.qt.io/archives/qt-4.8/qthelpproject.html#custom-
|
||||
# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
|
||||
# filters).
|
||||
# This tag requires that the tag GENERATE_QHP is set to YES.
|
||||
|
||||
QHP_CUST_FILTER_ATTRS =
|
||||
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:
|
||||
# http://doc.qt.io/archives/qt-4.8/qthelpproject.html#filter-attributes).
|
||||
# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
|
||||
# This tag requires that the tag GENERATE_QHP is set to YES.
|
||||
|
||||
QHP_SECT_FILTER_ATTRS =
|
||||
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 =
|
||||
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
|
||||
|
@ -1567,7 +1500,7 @@ EXT_LINKS_IN_WINDOW = NO
|
|||
|
||||
FORMULA_FONTSIZE = 14
|
||||
|
||||
# Use the FORMULA_TRANSPARENT tag to determine whether or not the images
|
||||
# Use the FORMULA_TRANPARENT 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.
|
||||
#
|
||||
|
@ -1579,7 +1512,7 @@ FORMULA_FONTSIZE = 14
|
|||
FORMULA_TRANSPARENT = YES
|
||||
|
||||
# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
|
||||
# https://www.mathjax.org) which uses client side Javascript for the rendering
|
||||
# http://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
|
||||
|
@ -1606,8 +1539,8 @@ MATHJAX_FORMAT = HTML-CSS
|
|||
# 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://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/.
|
||||
# MathJax from http://www.mathjax.org before deployment.
|
||||
# The default value is: http://cdn.mathjax.org/mathjax/latest.
|
||||
# This tag requires that the tag USE_MATHJAX is set to YES.
|
||||
|
||||
MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
|
||||
|
@ -1617,7 +1550,7 @@ MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
|
|||
# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
|
||||
# This tag requires that the tag USE_MATHJAX is set to YES.
|
||||
|
||||
MATHJAX_EXTENSIONS =
|
||||
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
|
||||
|
@ -1625,7 +1558,7 @@ MATHJAX_EXTENSIONS =
|
|||
# example see the documentation.
|
||||
# This tag requires that the tag USE_MATHJAX is set to YES.
|
||||
|
||||
MATHJAX_CODEFILE =
|
||||
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
|
||||
|
@ -1668,7 +1601,7 @@ SERVER_BASED_SEARCH = NO
|
|||
#
|
||||
# Doxygen ships with an example indexer (doxyindexer) and search engine
|
||||
# (doxysearch.cgi) which are based on the open source search engine library
|
||||
# Xapian (see: https://xapian.org/).
|
||||
# Xapian (see: http://xapian.org/).
|
||||
#
|
||||
# See the section "External Indexing and Searching" for details.
|
||||
# The default value is: NO.
|
||||
|
@ -1681,11 +1614,11 @@ EXTERNAL_SEARCH = NO
|
|||
#
|
||||
# Doxygen ships with an example indexer (doxyindexer) and search engine
|
||||
# (doxysearch.cgi) which are based on the open source search engine library
|
||||
# Xapian (see: https://xapian.org/). See the section "External Indexing and
|
||||
# Xapian (see: http://xapian.org/). See the section "External Indexing and
|
||||
# Searching" for details.
|
||||
# This tag requires that the tag SEARCHENGINE is set to YES.
|
||||
|
||||
SEARCHENGINE_URL =
|
||||
SEARCHENGINE_URL =
|
||||
|
||||
# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
|
||||
# search data is written to a file for indexing by an external tool. With the
|
||||
|
@ -1701,7 +1634,7 @@ SEARCHDATA_FILE = searchdata.xml
|
|||
# projects and redirect the results back to the right project.
|
||||
# This tag requires that the tag SEARCHENGINE is set to YES.
|
||||
|
||||
EXTERNAL_SEARCH_ID =
|
||||
EXTERNAL_SEARCH_ID =
|
||||
|
||||
# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
|
||||
# projects other than the one defined by this configuration file, but that are
|
||||
|
@ -1711,7 +1644,7 @@ EXTERNAL_SEARCH_ID =
|
|||
# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
|
||||
# This tag requires that the tag SEARCHENGINE is set to YES.
|
||||
|
||||
EXTRA_SEARCH_MAPPINGS =
|
||||
EXTRA_SEARCH_MAPPINGS =
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the LaTeX output
|
||||
|
@ -1733,34 +1666,21 @@ LATEX_OUTPUT = latex
|
|||
# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
|
||||
# invoked.
|
||||
#
|
||||
# Note that when not enabling USE_PDFLATEX the default is latex when enabling
|
||||
# USE_PDFLATEX the default is pdflatex and when in the later case latex is
|
||||
# chosen this is overwritten by pdflatex. For specific output languages the
|
||||
# default can have been set differently, this depends on the implementation of
|
||||
# the output language.
|
||||
# Note that when enabling USE_PDFLATEX this option is only used for generating
|
||||
# bitmaps for formulas in the HTML output, but not in the Makefile that is
|
||||
# written to the output directory.
|
||||
# The default file is: latex.
|
||||
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
||||
|
||||
LATEX_CMD_NAME = latex
|
||||
|
||||
# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
|
||||
# index for LaTeX.
|
||||
# Note: This tag is used in the Makefile / make.bat.
|
||||
# See also: LATEX_MAKEINDEX_CMD for the part in the generated output file
|
||||
# (.tex).
|
||||
# The default file is: makeindex.
|
||||
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
||||
|
||||
MAKEINDEX_CMD_NAME = makeindex
|
||||
|
||||
# The LATEX_MAKEINDEX_CMD tag can be used to specify the command name to
|
||||
# generate index for LaTeX.
|
||||
# Note: This tag is used in the generated output file (.tex).
|
||||
# See also: MAKEINDEX_CMD_NAME for the part in the Makefile / make.bat.
|
||||
# The default value is: \makeindex.
|
||||
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
||||
|
||||
LATEX_MAKEINDEX_CMD = \makeindex
|
||||
|
||||
# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
|
||||
# documents. This may be useful for small projects and may help to save some
|
||||
# trees in general.
|
||||
|
@ -1788,7 +1708,7 @@ PAPER_TYPE = a4
|
|||
# If left blank no extra packages will be included.
|
||||
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
||||
|
||||
EXTRA_PACKAGES =
|
||||
EXTRA_PACKAGES =
|
||||
|
||||
# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
|
||||
# generated LaTeX document. The header should contain everything until the first
|
||||
|
@ -1804,7 +1724,7 @@ EXTRA_PACKAGES =
|
|||
# to HTML_HEADER.
|
||||
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
||||
|
||||
LATEX_HEADER =
|
||||
LATEX_HEADER =
|
||||
|
||||
# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
|
||||
# generated LaTeX document. The footer should contain everything after the last
|
||||
|
@ -1815,7 +1735,7 @@ LATEX_HEADER =
|
|||
# Note: Only use a user-defined footer if you know what you are doing!
|
||||
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
||||
|
||||
LATEX_FOOTER =
|
||||
LATEX_FOOTER =
|
||||
|
||||
# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
|
||||
# LaTeX style sheets that are included after the standard style sheets created
|
||||
|
@ -1826,7 +1746,7 @@ LATEX_FOOTER =
|
|||
# list).
|
||||
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
||||
|
||||
LATEX_EXTRA_STYLESHEET =
|
||||
LATEX_EXTRA_STYLESHEET =
|
||||
|
||||
# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
|
||||
# other source files which should be copied to the LATEX_OUTPUT output
|
||||
|
@ -1834,7 +1754,7 @@ LATEX_EXTRA_STYLESHEET =
|
|||
# markers available.
|
||||
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
||||
|
||||
LATEX_EXTRA_FILES =
|
||||
LATEX_EXTRA_FILES =
|
||||
|
||||
# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
|
||||
# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
|
||||
|
@ -1881,28 +1801,12 @@ LATEX_SOURCE_CODE = NO
|
|||
|
||||
# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
|
||||
# bibliography, e.g. plainnat, or ieeetr. See
|
||||
# https://en.wikipedia.org/wiki/BibTeX and \cite for more info.
|
||||
# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
|
||||
# The default value is: plain.
|
||||
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
||||
|
||||
LATEX_BIB_STYLE = plain
|
||||
|
||||
# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
|
||||
# page will contain the date and time when the page was generated. Setting this
|
||||
# to NO can help when comparing the output of multiple runs.
|
||||
# The default value is: NO.
|
||||
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
||||
|
||||
LATEX_TIMESTAMP = NO
|
||||
|
||||
# The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute)
|
||||
# path from which the emoji images will be read. If a relative path is entered,
|
||||
# it will be relative to the LATEX_OUTPUT directory. If left blank the
|
||||
# LATEX_OUTPUT directory will be used.
|
||||
# This tag requires that the tag GENERATE_LATEX is set to YES.
|
||||
|
||||
LATEX_EMOJI_DIRECTORY =
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the RTF output
|
||||
#---------------------------------------------------------------------------
|
||||
|
@ -1942,22 +1846,22 @@ COMPACT_RTF = NO
|
|||
|
||||
RTF_HYPERLINKS = NO
|
||||
|
||||
# Load stylesheet definitions from file. Syntax is similar to doxygen's
|
||||
# configuration file, i.e. a series of assignments. You only have to provide
|
||||
# replacements, missing definitions are set to their default value.
|
||||
# Load stylesheet definitions from file. Syntax is similar to doxygen's config
|
||||
# file, i.e. a series of assignments. You only have to provide replacements,
|
||||
# missing definitions are set to their default value.
|
||||
#
|
||||
# See also section "Doxygen usage" for information on how to generate the
|
||||
# default style sheet that doxygen normally uses.
|
||||
# This tag requires that the tag GENERATE_RTF is set to YES.
|
||||
|
||||
RTF_STYLESHEET_FILE =
|
||||
RTF_STYLESHEET_FILE =
|
||||
|
||||
# Set optional variables used in the generation of an RTF document. Syntax is
|
||||
# similar to doxygen's configuration file. A template extensions file can be
|
||||
# generated using doxygen -e rtf extensionFile.
|
||||
# similar to doxygen's config file. A template extensions file can be generated
|
||||
# using doxygen -e rtf extensionFile.
|
||||
# This tag requires that the tag GENERATE_RTF is set to YES.
|
||||
|
||||
RTF_EXTENSIONS_FILE =
|
||||
RTF_EXTENSIONS_FILE =
|
||||
|
||||
# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code
|
||||
# with syntax highlighting in the RTF output.
|
||||
|
@ -2002,7 +1906,7 @@ MAN_EXTENSION = .3
|
|||
# MAN_EXTENSION with the initial . removed.
|
||||
# This tag requires that the tag GENERATE_MAN is set to YES.
|
||||
|
||||
MAN_SUBDIR =
|
||||
MAN_SUBDIR =
|
||||
|
||||
# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
|
||||
# will generate one additional man file for each entity documented in the real
|
||||
|
@ -2040,13 +1944,6 @@ XML_OUTPUT = xml
|
|||
|
||||
XML_PROGRAMLISTING = YES
|
||||
|
||||
# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include
|
||||
# namespace members in file scope as well, matching the HTML output.
|
||||
# The default value is: NO.
|
||||
# This tag requires that the tag GENERATE_XML is set to YES.
|
||||
|
||||
XML_NS_MEMB_FILE_SCOPE = NO
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the DOCBOOK output
|
||||
#---------------------------------------------------------------------------
|
||||
|
@ -2079,9 +1976,9 @@ DOCBOOK_PROGRAMLISTING = NO
|
|||
#---------------------------------------------------------------------------
|
||||
|
||||
# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
|
||||
# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures
|
||||
# the structure of the code including all documentation. Note that this feature
|
||||
# is still experimental and incomplete at the moment.
|
||||
# AutoGen Definitions (see http://autogen.sf.net) file that captures the
|
||||
# structure of the code including all documentation. Note that this feature is
|
||||
# still experimental and incomplete at the moment.
|
||||
# The default value is: NO.
|
||||
|
||||
GENERATE_AUTOGEN_DEF = NO
|
||||
|
@ -2122,7 +2019,7 @@ PERLMOD_PRETTY = YES
|
|||
# overwrite each other's variables.
|
||||
# This tag requires that the tag GENERATE_PERLMOD is set to YES.
|
||||
|
||||
PERLMOD_MAKEVAR_PREFIX =
|
||||
PERLMOD_MAKEVAR_PREFIX =
|
||||
|
||||
#---------------------------------------------------------------------------
|
||||
# Configuration options related to the preprocessor
|
||||
|
@ -2163,7 +2060,7 @@ SEARCH_INCLUDES = YES
|
|||
# preprocessor.
|
||||
# This tag requires that the tag SEARCH_INCLUDES is set to YES.
|
||||
|
||||
INCLUDE_PATH =
|
||||
INCLUDE_PATH =
|
||||
|
||||
# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
|
||||
# patterns (like *.h and *.hpp) to filter out the header-files in the
|
||||
|
@ -2171,7 +2068,7 @@ INCLUDE_PATH =
|
|||
# used.
|
||||
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
|
||||
|
||||
INCLUDE_FILE_PATTERNS =
|
||||
INCLUDE_FILE_PATTERNS =
|
||||
|
||||
# The PREDEFINED tag can be used to specify one or more macro names that are
|
||||
# defined before the preprocessor is started (similar to the -D option of e.g.
|
||||
|
@ -2221,13 +2118,13 @@ SKIP_FUNCTION_MACROS = YES
|
|||
# the path). If a tag file is not located in the directory in which doxygen is
|
||||
# run, you must also specify the path to the tagfile here.
|
||||
|
||||
TAGFILES =
|
||||
TAGFILES =
|
||||
|
||||
# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
|
||||
# tag file that is based on the input files it reads. See section "Linking to
|
||||
# external documentation" for more information about the usage of tag files.
|
||||
|
||||
GENERATE_TAGFILE =
|
||||
GENERATE_TAGFILE =
|
||||
|
||||
# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
|
||||
# the class index. If set to NO, only the inherited external classes will be
|
||||
|
@ -2276,14 +2173,14 @@ CLASS_DIAGRAMS = NO
|
|||
# the mscgen tool resides. If left empty the tool is assumed to be found in the
|
||||
# default search path.
|
||||
|
||||
MSCGEN_PATH =
|
||||
MSCGEN_PATH =
|
||||
|
||||
# You can include diagrams made with dia in doxygen documentation. Doxygen will
|
||||
# then run dia to produce the diagram and insert it in the documentation. The
|
||||
# DIA_PATH tag allows you to specify the directory where the dia binary resides.
|
||||
# If left empty dia is assumed to be found in the default search path.
|
||||
|
||||
DIA_PATH =
|
||||
DIA_PATH =
|
||||
|
||||
# If set to YES the inheritance and collaboration graphs will hide inheritance
|
||||
# and usage relations if the target is undocumented or is not a class.
|
||||
|
@ -2332,7 +2229,7 @@ DOT_FONTSIZE = 10
|
|||
# the path where dot can find it using this tag.
|
||||
# This tag requires that the tag HAVE_DOT is set to YES.
|
||||
|
||||
DOT_FONTPATH =
|
||||
DOT_FONTPATH =
|
||||
|
||||
# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
|
||||
# each documented class showing the direct and indirect inheritance relations.
|
||||
|
@ -2476,26 +2373,26 @@ INTERACTIVE_SVG = NO
|
|||
# found. If left blank, it is assumed the dot tool can be found in the path.
|
||||
# This tag requires that the tag HAVE_DOT is set to YES.
|
||||
|
||||
DOT_PATH =
|
||||
DOT_PATH =
|
||||
|
||||
# The DOTFILE_DIRS tag can be used to specify one or more directories that
|
||||
# contain dot files that are included in the documentation (see the \dotfile
|
||||
# command).
|
||||
# This tag requires that the tag HAVE_DOT is set to YES.
|
||||
|
||||
DOTFILE_DIRS =
|
||||
DOTFILE_DIRS =
|
||||
|
||||
# The MSCFILE_DIRS tag can be used to specify one or more directories that
|
||||
# contain msc files that are included in the documentation (see the \mscfile
|
||||
# command).
|
||||
|
||||
MSCFILE_DIRS =
|
||||
MSCFILE_DIRS =
|
||||
|
||||
# The DIAFILE_DIRS tag can be used to specify one or more directories that
|
||||
# contain dia files that are included in the documentation (see the \diafile
|
||||
# command).
|
||||
|
||||
DIAFILE_DIRS =
|
||||
DIAFILE_DIRS =
|
||||
|
||||
# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
|
||||
# path where java can find the plantuml.jar file. If left blank, it is assumed
|
||||
|
@ -2503,17 +2400,12 @@ DIAFILE_DIRS =
|
|||
# generate a warning when it encounters a \startuml command in this case and
|
||||
# will not generate output for the diagram.
|
||||
|
||||
PLANTUML_JAR_PATH =
|
||||
|
||||
# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a
|
||||
# configuration file for plantuml.
|
||||
|
||||
PLANTUML_CFG_FILE =
|
||||
PLANTUML_JAR_PATH =
|
||||
|
||||
# When using plantuml, the specified paths are searched for files specified by
|
||||
# the !include statement in a plantuml block.
|
||||
|
||||
PLANTUML_INCLUDE_PATH =
|
||||
PLANTUML_INCLUDE_PATH =
|
||||
|
||||
# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
|
||||
# that will be shown in the graph. If the number of nodes in a graph becomes
|
||||
|
|
|
@ -63,8 +63,7 @@
|
|||
\ingroup SPEC_MATH_GROUP
|
||||
|
||||
|
||||
\defgroup SPEC_MATH_TRIG_GROUP Тригонометрические и гиперболические функции
|
||||
вещественного и комплексного аргумента
|
||||
\defgroup SPEC_MATH_TRIG_GROUP Тригонометрические и гиперболические функции вещественного и комплексного аргумента
|
||||
\ingroup SPEC_MATH_GROUP
|
||||
|
||||
\defgroup SPEC_MATH_TRANSCEND Высшие трансцендентные функции
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
Функция использует указатели типа `void*` и может быть использована для
|
||||
конкатенации данных различного типа.<BR>
|
||||
Например конкатенация массивов типа `double`:
|
||||
\code
|
||||
\code{.cpp}
|
||||
double a[3] = {1.0, 2.0, 3.0};
|
||||
double b[2] = {4.0, 5.0};
|
||||
double c[5];
|
||||
|
@ -41,13 +41,11 @@ double c[5];
|
|||
concat((void*)a, 3*sizeof(double), (void*)b, 2*sizeof(double), (void*)c);
|
||||
\endcode
|
||||
в результате вектор `c` будет хранить массив данных:
|
||||
\code
|
||||
\verbatim
|
||||
c = [1.0, 2.0, 3.0, 4.0, 5.0]
|
||||
\endcode
|
||||
\endverbatim
|
||||
|
||||
\author
|
||||
Бахурин Сергей
|
||||
www.dsplib.org
|
||||
\author Бахурин Сергей, www.dsplib.org
|
||||
**************************************************************************** */
|
||||
|
||||
|
||||
|
@ -87,7 +85,7 @@ www.dsplib.org
|
|||
В противном случае \ref ERROR_CODE_GROUP "код ошибки".
|
||||
|
||||
Пример децимации вещественного массива данных в 2 раза:
|
||||
\code
|
||||
\code{.cpp}
|
||||
double x[10] = {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
|
||||
double y[5];
|
||||
int d = 2;
|
||||
|
@ -97,9 +95,9 @@ decimate(x, 10, d, y, &cnt);
|
|||
\endcode
|
||||
в результате в переменную `cnt` будет записан размер 5,
|
||||
а вектор `y` будет хранить массив данных:
|
||||
\code
|
||||
\verbatim
|
||||
c = [0.0, 2.0, 4.0, 6.0, 8.0]
|
||||
\endcode
|
||||
\endverbatim
|
||||
|
||||
\author Бахурин Сергей www.dsplib.org
|
||||
**************************************************************************** */
|
||||
|
@ -139,7 +137,7 @@ c = [0.0, 2.0, 4.0, 6.0, 8.0]
|
|||
В противном случае \ref ERROR_CODE_GROUP "код ошибки".
|
||||
|
||||
Пример децимации комплексного массива данных в 2 раза:
|
||||
\code
|
||||
\code{.cpp}
|
||||
compex_t x[10] = {{0.0, 0.0}, {1.0, 1.0}, {2.0, 2.0}, {3.0, 3.0}, {4.0, 4.0},
|
||||
{5.0, 5.0}, {6.0, 6.0}, {7.0, 7.0}, {8.0, 8.0}, {9.0, 9.0}};
|
||||
compex_t y[5];
|
||||
|
@ -150,11 +148,256 @@ decimate_cmplx(x, 10, d, y, &cnt);
|
|||
\endcode
|
||||
в результате в переменную `cnt` будет записан размер 5,
|
||||
а вектор `y` будет хранить массив данных:
|
||||
\code
|
||||
\verbatim
|
||||
c = [0.0+0.0j, 2.0+2.0j, 4.0+4.0j, 6.0+6.0j, 8.0+8.0j]
|
||||
\endcode
|
||||
\endverbatim
|
||||
|
||||
\author Бахурин Сергей www.dsplib.org
|
||||
**************************************************************************** */
|
||||
|
||||
|
||||
|
||||
/*! ****************************************************************************
|
||||
\ingroup SPEC_MATH_STAT_GROUP
|
||||
\fn int find_max_abs(double* a, int n, double* m, int* ind)
|
||||
\brief Поиск максимального по модулю элемента вещественного вектора `a`
|
||||
|
||||
Функция производит поиск максимального по модулю значения вектора `a`.<BR>
|
||||
Максимальное по модулю значение `max|a[k]|` сохраняется по адресу `m`, а индекс
|
||||
данного значения в векторе `a` сохраняется по адресу `ind`.<BR>
|
||||
|
||||
\param[in] a Указатель на вещественный вектор `a`.<BR>
|
||||
Размер вектора `[n x 1]`.<BR><BR>
|
||||
|
||||
\param[in] n Размер входного вектора `a`.<BR><BR>
|
||||
|
||||
|
||||
\param[out] m Указатель на адрес памяти, в который сохранить
|
||||
максимальное по модулю значение вектора `a`.<BR>
|
||||
Указатель может быть `NULL`, в этом случае
|
||||
максимальное по модулю значение не сохраняется.<BR><BR>
|
||||
|
||||
\param[out] ind Указатель на переменную, в которую будет сохранен
|
||||
индекс максимального по модулю значению вектора `a`.<BR>
|
||||
Указатель может быть `NULL`, в этом случае
|
||||
индекс не возвращается.<BR><BR>
|
||||
|
||||
\return
|
||||
`RES_OK` если функция выполнена успешно.<BR>
|
||||
В противном случае \ref ERROR_CODE_GROUP "код ошибки".
|
||||
|
||||
Пример:
|
||||
\code{.cpp}
|
||||
double a[5] = {0.0, 2.0, -5.0, 4.0, 2.0};
|
||||
double m;
|
||||
int ind;
|
||||
find_max_abs(a, 5, &m, &ind);
|
||||
printf("\n\nmax absolute value: %8.1f (index %d)", m, ind);
|
||||
\endcode
|
||||
в результате в переменную `m` будет записано значение `5`,
|
||||
а в переменную `ind` значение `2`.
|
||||
|
||||
\author Бахурин Сергей www.dsplib.org
|
||||
**************************************************************************** */
|
||||
|
||||
|
||||
/*! ****************************************************************************
|
||||
\ingroup SPEC_MATH_COMMON_GROUP
|
||||
\fn int flipip(double* x, int n)
|
||||
\brief Функция отражения вещественного вектора `x`
|
||||
|
||||
Функция производит отражение вещественного вектора длины `n`
|
||||
в памяти данных.<BR>
|
||||
Например исходный вектор `x` длины 6:<BR>
|
||||
\verbatim
|
||||
x = [0, 1, 2, 3, 4, 5]
|
||||
\endverbatim
|
||||
После отражения вектор `x` будет иметь вид:
|
||||
\verbatim
|
||||
x = [5, 4, 3, 2, 1, 0]
|
||||
\endverbatim
|
||||
|
||||
\param[in, out] x Указатель на вещественный вектор `x`.<BR>
|
||||
Размер вектора `[n x 1]`.<BR>
|
||||
Результат отражения будет помещен по этому же адресу.<BR>
|
||||
|
||||
\param[in] n Размер вектора `x`.<BR><BR>
|
||||
|
||||
\return
|
||||
`RES_OK` если функция выполнена успешно.<BR>
|
||||
В противном случае \ref ERROR_CODE_GROUP "код ошибки".
|
||||
|
||||
Пример:
|
||||
\code{.cpp}
|
||||
double x[5] = {0.0, 1.0, 2.0, 3.0, 4.0};
|
||||
int i;
|
||||
for(i = 0; i < 5; i++)
|
||||
printf("%6.1f ", x[i]);
|
||||
flipip(x, 5);
|
||||
printf("\n");
|
||||
for(i = 0; i < 5; i++)
|
||||
printf("%6.1f ", x[i]);
|
||||
\endcode
|
||||
<BR>
|
||||
Результат выполнения:
|
||||
\verbatim
|
||||
0.0 1.0 2.0 3.0 4.0
|
||||
4.0 3.0 2.0 1.0 0.0
|
||||
\endverbatim
|
||||
|
||||
\author Бахурин Сергей www.dsplib.org
|
||||
**************************************************************************** */
|
||||
|
||||
|
||||
|
||||
/*! ****************************************************************************
|
||||
\ingroup SPEC_MATH_COMMON_GROUP
|
||||
\fn int flipip_cmplx(complex_t* x, int n)
|
||||
\brief Функция отражения комплексного вектора `x`
|
||||
|
||||
Функция производит отражение комплексного вектора длины `n`
|
||||
в памяти данных.<BR>
|
||||
Например исходный вектор `x` длины 6:<BR>
|
||||
\verbatim
|
||||
x = [0+0j, 1+1j, 2+2j, 3+3j, 4+4j, 5+5j]
|
||||
\endverbatim
|
||||
После отражения вектор `x` будет иметь вид:
|
||||
\verbatim
|
||||
x = [5+5j, 4+4j, 3+3j, 2+2j, 1+1j, 0+0j]
|
||||
\endverbatim
|
||||
|
||||
\param[in, out] x Указатель на комплексный вектор `x`.<BR>
|
||||
Размер вектора `[n x 1]`.<BR>
|
||||
Результат отражения будет помещен по этому же адресу.<BR>
|
||||
|
||||
\param[in] n Размер вектора `x`.<BR><BR>
|
||||
|
||||
\return
|
||||
`RES_OK` если функция выполнена успешно.<BR>
|
||||
В противном случае \ref ERROR_CODE_GROUP "код ошибки".
|
||||
|
||||
Пример:
|
||||
\code{.cpp}
|
||||
complex_t y[5] = {{0.0, 0.0}, {1.0, 1.0}, {2.0, 2.0}, {3.0, 3.0}, {4.0, 4.0}};
|
||||
for(i = 0; i < 5; i++)
|
||||
printf("%6.1f%+.1fj ", RE(y[i]), IM(y[i]));
|
||||
flipip_cmplx(y, 5);
|
||||
printf("\n");
|
||||
for(i = 0; i < 5; i++)
|
||||
printf("%6.1f%+.1fj ", RE(y[i]), IM(y[i]));
|
||||
\endcode
|
||||
<BR>
|
||||
Результат выполнения:
|
||||
\verbatim
|
||||
0.0+0.0j 1.0+1.0j 2.0+2.0j 3.0+3.0j 4.0+4.0j
|
||||
4.0+4.0j 3.0+3.0j 2.0+2.0j 1.0+1.0j 0.0+0.0j
|
||||
\endverbatim
|
||||
|
||||
\author Бахурин Сергей www.dsplib.org
|
||||
**************************************************************************** */
|
||||
|
||||
|
||||
|
||||
/*! ****************************************************************************
|
||||
\ingroup SPEC_MATH_COMMON_GROUP
|
||||
\fn int verif(double* x, double* y, size_t n, double eps, double* err)
|
||||
\brief Верификация вещественных массивов
|
||||
|
||||
Функция производит расчет максимальной относительной ошибки между вещественными
|
||||
векторами `x` и `y` равной длины `n`:
|
||||
|
||||
\f[
|
||||
e = \max \left( \frac{|x(k) - y(k)| }{ |x(k)|} \right), \quad \quad |x(k)| > 0,
|
||||
\f]
|
||||
или
|
||||
\f[
|
||||
e = \max(|x(k) - y(k)| ), ~\qquad \quad~|x(k)| = 0,
|
||||
\f]
|
||||
и возвращает `DSPL_VERIF_SUCCESS` если
|
||||
разница \f$ e\f$ меньше `eps`.
|
||||
В противном случае возвращает `DSPL_VERIF_FAILED`.<BR>
|
||||
Данная функция используется для верификации работы алгоритмов если вектор `x`
|
||||
результат работы алгоритма пользователя, а `y` -- результат работы этого же
|
||||
алгоритма сторонней функцией.
|
||||
|
||||
\param[in] x Указатель на первый вектор `x`.<BR>
|
||||
Размер вектора `[n x 1]`.<BR><BR>
|
||||
|
||||
\param[in] y Указатель на второй вектор `y`.<BR>
|
||||
Размер вектора `[n x 1]`.<BR><BR>
|
||||
|
||||
\param[in] n Размер векторов `x` и `y`.<BR><BR>
|
||||
|
||||
\param[in] eps Допустимая относительная ошибка.<BR>
|
||||
Если максимальная относительная ошибка меньше `eps`, то
|
||||
функция возвращает `DSPL_VERIF_SUCCESS`, в противном случае
|
||||
`DSPL_VERIF_FAILED`. <BR><BR>
|
||||
|
||||
\param[in, out] err Указатель на переменную максимальной
|
||||
относительной ошибки.<BR>
|
||||
По данному адресу будет записано значение максимальной
|
||||
относительной ошибки.<BR>
|
||||
Указатель может быть `NULL`, значение ошибки в этом
|
||||
случае не возвращается.<BR><BR>
|
||||
|
||||
\return
|
||||
`DSPL_VERIF_SUCCESS` если относительная ошибка меньше `eps`.<BR>
|
||||
В противном случае `DSPL_VERIF_FAILED`.
|
||||
|
||||
\author Бахурин Сергей www.dsplib.org
|
||||
**************************************************************************** */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*! ****************************************************************************
|
||||
\ingroup SPEC_MATH_COMMON_GROUP
|
||||
\fn int verif_cmplx(complex_t* x, complex_t* y, size_t n,
|
||||
double eps, double* err)
|
||||
\brief Верификация комплексных массивов
|
||||
|
||||
Функция производит расчет максимальной относительной ошибки между комплексными
|
||||
векторами `x` и `y` равной длины `n`:
|
||||
|
||||
\f[
|
||||
e = \max \left( \frac{|x(k) - y(k)| }{ |x(k)|} \right), \quad \quad |x(k)| > 0,
|
||||
\f]
|
||||
или
|
||||
\f[
|
||||
e = \max(|x(k) - y(k)| ), ~\qquad \quad~|x(k)| = 0,
|
||||
\f]
|
||||
и возвращает `DSPL_VERIF_SUCCESS` если
|
||||
разница \f$ e\f$ меньше `eps`.
|
||||
В противном случае возвращает `DSPL_VERIF_FAILED`.<BR>
|
||||
Данная функция используется для верификации работы алгоритмов если вектор `x`
|
||||
результат работы алгоритма пользователя, а `y` -- результат работы этого же
|
||||
алгоритма сторонней функцией.
|
||||
|
||||
\param[in] x Указатель на первый вектор `x`.<BR>
|
||||
Размер вектора `[n x 1]`.<BR><BR>
|
||||
|
||||
\param[in] y Указатель на второй вектор `y`.<BR>
|
||||
Размер вектора `[n x 1]`.<BR><BR>
|
||||
|
||||
\param[in] n Размер векторов `x` и `y`.<BR><BR>
|
||||
|
||||
\param[in] eps Допустимая относительная ошибка.<BR>
|
||||
Если максимальная относительная ошибка меньше `eps`, то
|
||||
функция возвращает `DSPL_VERIF_SUCCESS`, в противном случае
|
||||
`DSPL_VERIF_FAILED`. <BR><BR>
|
||||
|
||||
\param[in, out] err Указатель на переменную максимальной
|
||||
относительной ошибки.<BR>
|
||||
По данному адресу будет записано значение максимальной
|
||||
относительной ошибки.<BR>
|
||||
Указатель может быть `NULL`, значение ошибки в этом
|
||||
случае не возвращается.<BR><BR>
|
||||
|
||||
\return
|
||||
`DSPL_VERIF_SUCCESS` если функция выполнена успешно.<BR>
|
||||
В противном случае `DSPL_VERIF_FAILED`.
|
||||
|
||||
\author Бахурин Сергей www.dsplib.org
|
||||
**************************************************************************** */
|
||||
|
||||
|
|
|
@ -0,0 +1,115 @@
|
|||
|
||||
|
||||
/*! ****************************************************************************
|
||||
\ingroup SPEC_MATH_TRANSCEND
|
||||
\fn int cheby_poly1(double* x, int n, int ord, double* y)
|
||||
\brief Многочлен Чебышева первого рода порядка `ord`
|
||||
|
||||
Функция производит расчет многочлена Чебышева первого рода \f$ C_ord(x)\f$ для
|
||||
вещественного вектора `x` длины `n`на основе рекуррентной формулы
|
||||
\f[
|
||||
C_ord(x) = 2 x C_{ord-1}(x) - C_{ord-2}(x),
|
||||
\f]
|
||||
где \f$ C_0(x) = 1 \f$, \f$ C_1(x) = x\f$
|
||||
|
||||
\param[in] x Указатель на вектор `x` аргумента полинома
|
||||
Чебышева первого рода.<BR>
|
||||
Размер вектора `[n x 1]`.<BR><BR>
|
||||
|
||||
\param[in] n Размер векторов `x` и `y`.<BR><BR>
|
||||
|
||||
\param[in] ord Порядок полинома Чебышева первого рода.<BR><BR>
|
||||
|
||||
\param[out] y Указатель на вектор значений полинома Чебышева,
|
||||
соответствующих аргументу `x`.<BR>
|
||||
Размер вектора `[n x 1]`.<BR>
|
||||
Память должна быть выделена.<BR><BR>
|
||||
|
||||
\return
|
||||
`RES_OK` Расчет произведен успешно.<BR>
|
||||
В противном случае \ref ERROR_CODE_GROUP "код ошибки".<BR>
|
||||
|
||||
Пример использования функции:
|
||||
|
||||
\include cheby_poly1_test.c
|
||||
|
||||
<BR><BR>
|
||||
В каталоге `dat` будут созданы текстовые файлы значений
|
||||
полиномов порядка 1-4:<BR>
|
||||
|
||||
<pre>
|
||||
cheby_poly1_ord1.txt
|
||||
cheby_poly1_ord2.txt
|
||||
cheby_poly1_ord3.txt
|
||||
cheby_poly1_ord4.txt
|
||||
</pre>
|
||||
|
||||
Кроме того программа GNUPLOT произведет построение следующих графиков
|
||||
по сохраненным в файлах данным:
|
||||
|
||||
\image html cheby_poly1.png
|
||||
|
||||
Скрипт GNUPLOT для построения графиков из текстовых файлов:
|
||||
\include cheby_poly1.plt
|
||||
|
||||
\author Бахурин Сергей www.dsplib.org
|
||||
**************************************************************************** */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*! ****************************************************************************
|
||||
\ingroup SPEC_MATH_TRANSCEND
|
||||
\fn int cheby_poly2(double* x, int n, int ord, double* y)
|
||||
\brief Многочлен Чебышева второго рода порядка `ord`
|
||||
|
||||
Функция производит расчет многочлена Чебышева второго рода \f$ U_{ord}(x)\f$ для
|
||||
вещественного вектора `x` длины `n`на основе рекуррентной формулы
|
||||
\f[
|
||||
U_{ord}(x) = 2 x U_{ord-1}(x) - U_{ord-2}(x),
|
||||
\f]
|
||||
где \f$ U_0(x) = 1 \f$, \f$ U_1(x) = 2x\f$
|
||||
|
||||
\param[in] x Указатель на вектор `x` аргумента полинома
|
||||
Чебышева второго рода.<BR>
|
||||
Размер вектора `[n x 1]`.<BR><BR>
|
||||
|
||||
\param[in] n Размер векторов `x` и `y`.<BR><BR>
|
||||
|
||||
\param[in] ord Порядок полинома Чебышева второго рода.<BR><BR>
|
||||
|
||||
\param[out] y Указатель на вектор значений полинома Чебышева,
|
||||
соответствующих аргументу `x`.<BR>
|
||||
Размер вектора `[n x 1]`.<BR>
|
||||
Память должна быть выделена.<BR><BR>
|
||||
|
||||
\return
|
||||
`RES_OK` Расчет произведен успешно.<BR>
|
||||
В противном случае \ref ERROR_CODE_GROUP "код ошибки".<BR>
|
||||
|
||||
Пример использования функции:
|
||||
|
||||
\include cheby_poly2_test.c
|
||||
|
||||
<BR><BR>
|
||||
В каталоге `dat` будут созданы текстовые файлы значений
|
||||
полиномов порядка 1-4:<BR>
|
||||
|
||||
<pre>
|
||||
cheby_poly2_ord1.txt
|
||||
cheby_poly2_ord2.txt
|
||||
cheby_poly2_ord3.txt
|
||||
cheby_poly2_ord4.txt
|
||||
</pre>
|
||||
|
||||
Кроме того программа GNUPLOT произведет построение следующих графиков
|
||||
по сохраненным в файлах данным:
|
||||
|
||||
\image html cheby_poly2.png
|
||||
|
||||
Скрипт GNUPLOT для построения графиков из текстовых файлов:
|
||||
\include cheby_poly2.plt
|
||||
|
||||
\author Бахурин Сергей www.dsplib.org
|
||||
**************************************************************************** */
|
|
@ -10,7 +10,7 @@
|
|||
|
||||
Например:
|
||||
|
||||
\code
|
||||
\code{.cpp}
|
||||
complex_t z;
|
||||
z[0] = 1.0;
|
||||
z[1] = -2.0;
|
||||
|
@ -42,7 +42,7 @@
|
|||
\f]
|
||||
|
||||
Например:
|
||||
\code
|
||||
\code{.cpp}
|
||||
complex_t z;
|
||||
double y;
|
||||
RE(z) = 1.0;
|
||||
|
@ -66,7 +66,7 @@
|
|||
\brief Макрос определяющий мнимую часть комплексного числа.
|
||||
|
||||
Например:
|
||||
\code
|
||||
\code{.cpp}
|
||||
complex_t z;
|
||||
RE(z) = 1.0;
|
||||
IM(z) = -2.0;
|
||||
|
@ -76,7 +76,7 @@
|
|||
|
||||
Аналогично, макрос можно использовать для получения
|
||||
мнимой части комплексного числа:
|
||||
\code
|
||||
\code{.cpp}
|
||||
complex_t z = {3.0, -4.0};
|
||||
double r;
|
||||
r = IM(z);
|
||||
|
@ -100,10 +100,10 @@
|
|||
\brief Макрос определяющий реальную часть комплексного числа.
|
||||
|
||||
Например:
|
||||
\code
|
||||
complex_t z;
|
||||
RE(z) = 1.0;
|
||||
IM(z) = -2.0;
|
||||
\code{.cpp}
|
||||
complex_t z;
|
||||
RE(z) = 1.0;
|
||||
IM(z) = -2.0;
|
||||
\endcode
|
||||
|
||||
Переменная `z = 1-2j`, где `j` - мнимая единица.
|
||||
|
@ -111,10 +111,10 @@
|
|||
Аналогично, макрос можно использовать для получения
|
||||
реальной части комплексного числа:
|
||||
|
||||
\code
|
||||
complex_t z = {3.0, -4.0};
|
||||
double r;
|
||||
r = RE(z);
|
||||
\code{.cpp}
|
||||
complex_t z = {3.0, -4.0};
|
||||
double r;
|
||||
r = RE(z);
|
||||
\endcode
|
||||
В данном примере переменная `z = 3-4i`, а в переменой `r`
|
||||
будет храниться число 3.
|
||||
|
@ -125,6 +125,238 @@
|
|||
|
||||
|
||||
|
||||
/*! ****************************************************************************
|
||||
\ingroup SPEC_MATH_TRIG_GROUP
|
||||
\fn int acos_cmplx(complex_t* x, int n, complex_t *y)
|
||||
\brief Арккосинус комплексного аргумента `x`
|
||||
|
||||
Функция рассчитывает значения арккосинуса комплексного аргумента,
|
||||
заданного вектором `x` длины `n`: <BR>
|
||||
\f[
|
||||
\textrm{Arccos}(x) = \frac{\pi}{2} - \textrm{Arcsin}(x) =
|
||||
\frac{\pi}{2} -j \textrm{Ln}\left( j x + \sqrt{1 - x^2} \right)
|
||||
\f]
|
||||
|
||||
|
||||
\param[in] x Указатель на вектор аргумента комплексного арккосинуса.<BR>
|
||||
Размер вектора `[n x 1]`. <BR><BR>
|
||||
|
||||
\param[in] n Размер входного и выходного векторов `x` и `y`.<BR><BR>
|
||||
|
||||
|
||||
\param[out] y Указатель на вектор значений комплексного арккосинуса,
|
||||
соответствующего входному вектору `x`.<BR>
|
||||
Размер массива `[n x 1]`. <BR>
|
||||
Память должна быть выделена. <BR><BR>
|
||||
|
||||
\return
|
||||
`RES_OK` если значение функции рассчитано успешно . <BR>
|
||||
В противном случае \ref ERROR_CODE_GROUP "код ошибки":<BR>
|
||||
|
||||
\note Функция может использоваться для расчета арккосинуса аргумента
|
||||
большего единицы, когда вещественная функция `acos` не определена.
|
||||
|
||||
Например при выполнении следующего кода
|
||||
\code{.cpp}
|
||||
complex_t x[3] = {{1.0, 2.0}, {3.0, 4.0}, {5.0, 6.0}};
|
||||
complex_t y[3];
|
||||
int k;
|
||||
|
||||
acos_cmplx(x, 3, y);
|
||||
|
||||
for(k = 0; k < 3; k++)
|
||||
printf("acos_cmplx(%.1f%+.1fj) = %.3f%+.3fj\n",
|
||||
RE(x[k]), IM(x[k]), RE(y[k]), IM(y[k]));
|
||||
\endcode
|
||||
<BR>
|
||||
|
||||
Результатом работы будет
|
||||
|
||||
\verbatim
|
||||
acos_cmplx(1.0+2.0j) = 1.144-1.529j
|
||||
acos_cmplx(3.0+4.0j) = 0.937-2.306j
|
||||
acos_cmplx(5.0+6.0j) = 0.880-2.749j
|
||||
\endverbatim
|
||||
|
||||
\author
|
||||
Бахурин Сергей www.dsplib.org
|
||||
***************************************************************************** */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*! ****************************************************************************
|
||||
\ingroup SPEC_MATH_TRIG_GROUP
|
||||
\fn int asin_cmplx(complex_t* x, int n, complex_t *y)
|
||||
\brief Арксинус комплексного аргумента `x`
|
||||
|
||||
Функция рассчитывает значения арксинуса комплексного аргумента,
|
||||
заданного вектором `x` длины `n`: <BR>
|
||||
\f[
|
||||
\textrm{Arcsin}(x) = j \textrm{Ln}\left( j x + \sqrt{1 - x^2} \right)
|
||||
\f]
|
||||
|
||||
|
||||
\param[in] x Указатель на вектор аргумента комплексного арксинуса.<BR>
|
||||
Размер вектора `[n x 1]`. <BR><BR>
|
||||
|
||||
\param[in] n Размер входного и выходного векторов `x` и `y`.<BR><BR>
|
||||
|
||||
|
||||
\param[out] y Указатель на вектор значений комплексного арксинуса,
|
||||
соответствующего входному вектору `x`.<BR>
|
||||
Размер массива `[n x 1]`. <BR>
|
||||
Память должна быть выделена. <BR><BR>
|
||||
|
||||
\return
|
||||
`RES_OK` если значение функции рассчитано успешно . <BR>
|
||||
В противном случае \ref ERROR_CODE_GROUP "код ошибки":<BR>
|
||||
|
||||
\note Функция может использоваться для расчета арксинуса аргумента
|
||||
большего единицы, когда вещественная функция `acos` не определена.
|
||||
|
||||
Например при выполнении следующего кода
|
||||
\code{.cpp}
|
||||
complex_t x[3] = {{1.0, 2.0}, {3.0, 4.0}, {5.0, 6.0}};
|
||||
complex_t y[3];
|
||||
int k;
|
||||
|
||||
asin_cmplx(x, 3, y);
|
||||
for(k = 0; k < 3; k++)
|
||||
printf("asin_cmplx(%.1f%+.1fj) = %.3f%+.3fj\n",
|
||||
RE(x[k]), IM(x[k]), RE(y[k]), IM(y[k]));
|
||||
\endcode
|
||||
<BR>
|
||||
|
||||
Результатом работы будет
|
||||
|
||||
\verbatim
|
||||
asin_cmplx(1.0+2.0j) = 0.427+1.529j
|
||||
asin_cmplx(3.0+4.0j) = 0.634+2.306j
|
||||
asin_cmplx(5.0+6.0j) = 0.691+2.749j
|
||||
\endverbatim
|
||||
|
||||
\author
|
||||
Бахурин Сергей www.dsplib.org
|
||||
***************************************************************************** */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*! ****************************************************************************
|
||||
\ingroup TYPES_GROUP
|
||||
\fn int cmplx2re(complex_t* x, int n, double* re, double* im)
|
||||
\brief Преобразование массива комплексных данных в два массива
|
||||
вещественных данных, содержащих реальную и мнимую части
|
||||
исходного массива
|
||||
|
||||
Функция заполняет реальные массивы `re` и `im` соответствующими значениями
|
||||
реальной и мнимой частей исходного комплексного массива `x`. <BR>
|
||||
|
||||
|
||||
\param[in] x Указатель на массив комплексных данных.<BR>
|
||||
Размер массива `[n x 1]`. <BR><BR>
|
||||
|
||||
\param[in] n Размер массивов входных и выходных данных.<BR><BR>
|
||||
|
||||
\param[out] re Указатель на адрес массива реальной части данных.<BR>
|
||||
Размер массива `[n x 1]`. <BR>
|
||||
Память должна быть выделена. <BR><BR>
|
||||
|
||||
\param[out] im Указатель на адрес массива мнимой части данных.<BR>
|
||||
Размер массива `[n x 1]`. <BR>
|
||||
Память должна быть выделена. <BR><BR>
|
||||
|
||||
\return
|
||||
`RES_OK` если преобразование произведено успешно. <BR>
|
||||
В противном случае \ref ERROR_CODE_GROUP "код ошибки":<BR>
|
||||
|
||||
Например при выполнении следующего кода
|
||||
\code{.cpp}
|
||||
complex_t x[3] = {{1.0, 2.0}, {3.0, 4.0}, {5.0, 6.0}};
|
||||
double re[3], im[3];
|
||||
|
||||
cmplx2re(x, 3, re, im);
|
||||
\endcode
|
||||
|
||||
Элементам массивов `re` и `im` будут присвоены значения:
|
||||
|
||||
\verbatim
|
||||
re[0] = 1.0; im[0] = 2.0;
|
||||
re[1] = 3.0; im[1] = 4.0;
|
||||
re[2] = 5.0; im[2] = 6.0;
|
||||
\endverbatim
|
||||
|
||||
\author Бахурин Сергей. www.dsplib.org
|
||||
***************************************************************************** */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*! ****************************************************************************
|
||||
\ingroup SPEC_MATH_TRIG_GROUP
|
||||
\fn int cos_cmplx(complex_t* x, int n, complex_t *y)
|
||||
\brief Косинус комплексного аргумента `x`
|
||||
|
||||
Функция рассчитывает значения косинуса комплексного аргумента,
|
||||
заданного вектором `x` длины `n`: <BR>
|
||||
\f[
|
||||
\textrm{cos}(x) = \frac{\exp(jx) + \exp(-jx)}{2}
|
||||
\f]
|
||||
|
||||
|
||||
\param[in] x Указатель на вектор аргумента комплексного косинуса.<BR>
|
||||
Размер вектора `[n x 1]`. <BR><BR>
|
||||
|
||||
\param[in] n Размер входного и выходного векторов `x` и `y`.<BR><BR>
|
||||
|
||||
|
||||
\param[out] y Указатель на вектор значений комплексного косинуса,
|
||||
соответствующего входному вектору `x`.<BR>
|
||||
Размер массива `[n x 1]`. <BR>
|
||||
Память должна быть выделена. <BR><BR>
|
||||
|
||||
\return
|
||||
`RES_OK` если значение функции рассчитано успешно . <BR>
|
||||
В противном случае \ref ERROR_CODE_GROUP "код ошибки":<BR>
|
||||
|
||||
Например при выполнении следующего кода
|
||||
\code{.cpp}
|
||||
complex_t x[3] = {{1.0, 2.0}, {3.0, 4.0}, {5.0, 6.0}};
|
||||
complex_t y[3];
|
||||
int k;
|
||||
|
||||
|
||||
cos_cmplx(x, 3, y);
|
||||
|
||||
for(k = 0; k < 3; k++)
|
||||
printf("cos_cmplx(%.1f%+.1fj) = %9.3f%+9.3fj\n",
|
||||
RE(x[k]), IM(x[k]), RE(y[k]), IM(y[k]));
|
||||
|
||||
\endcode
|
||||
<BR>
|
||||
|
||||
Результатом работы будет
|
||||
|
||||
\verbatim
|
||||
cos_cmplx(1.0+2.0j) = 2.033 -3.052j
|
||||
cos_cmplx(3.0+4.0j) = -27.035 -3.851j
|
||||
cos_cmplx(5.0+6.0j) = 57.219 +193.428j
|
||||
\endverbatim
|
||||
|
||||
\author
|
||||
Бахурин Сергей www.dsplib.org
|
||||
***************************************************************************** */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -175,58 +407,3 @@
|
|||
www.dsplib.org
|
||||
***************************************************************************** */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*! ****************************************************************************
|
||||
\ingroup TYPES_GROUP
|
||||
\fn int cmplx2re(complex_t* x, int n, double *re, double *im)
|
||||
\brief Преобразование массива комплексных данных в два массива
|
||||
вещественных данных, содержащих реальную и мнимую части
|
||||
исходного массива
|
||||
|
||||
Функция заполняет реальные массивы `re` и `im` соответсвующими значениями
|
||||
ральной и мнимой частей исходного комплексного массива `x`. <BR>
|
||||
|
||||
|
||||
\param[in] x Указатель на массв комплексных данных.<BR>
|
||||
Размер массива `[n x 1]`. <BR><BR>
|
||||
|
||||
\param[in] n Размер массивов входных и выходных данных.<BR><BR>
|
||||
|
||||
\param[out] re Указатель на адрес массива реальной части данных.<BR>
|
||||
Размер массива `[n x 1]`. <BR>
|
||||
Память должна быть выделена. <BR><BR>
|
||||
|
||||
\param[out] im Указатель на адрес массива мнимой части данных.<BR>
|
||||
Размер массива `[n x 1]`. <BR>
|
||||
Память должна быть выделена. <BR><BR>
|
||||
|
||||
\return
|
||||
`RES_OK` если преобразование произведено успешно. <BR>
|
||||
В противном случае \ref ERROR_CODE_GROUP "код ошибки":<BR>
|
||||
|
||||
Например при выполнении следующего кода
|
||||
\code{.cpp}
|
||||
complex_t x[3] = {{1.0, 2.0}, {3.0, 4.0}, {5.0, 6.0}};
|
||||
double re[3], im[3];
|
||||
|
||||
cmplx2re(x, 3, re, im);
|
||||
\endcode
|
||||
|
||||
Элементам массивов `re` и `im` будут присвоены значения:
|
||||
|
||||
\verbatim
|
||||
re[0] = 1.0; im[0] = 2.0;
|
||||
re[1] = 3.0; im[1] = 4.0;
|
||||
re[2] = 5.0; im[2] = 6.0;
|
||||
\endverbatim
|
||||
|
||||
\author
|
||||
Бахурин Сергей.
|
||||
www.dsplib.org
|
||||
***************************************************************************** */
|
||||
|
||||
|
||||
|
|
235
dspl/src/array.c
235
dspl/src/array.c
|
@ -57,7 +57,7 @@ concatenation of these arrays will be array `c` size `na+nb`:<BR>
|
|||
Function uses pointer type `void*` and can be useful for an arrays
|
||||
concatenation with different types.<BR>
|
||||
For example two `double` arrays concatenation:
|
||||
\code
|
||||
\code{.cpp}
|
||||
double a[3] = {1.0, 2.0, 3.0};
|
||||
double b[2] = {4.0, 5.0};
|
||||
double c[5];
|
||||
|
@ -65,9 +65,9 @@ double c[5];
|
|||
concat((void*)a, 3*sizeof(double), (void*)b, 2*sizeof(double), (void*)c);
|
||||
\endcode
|
||||
Vector `c` keeps follow data:
|
||||
\code
|
||||
\verbatim
|
||||
c = [1.0, 2.0, 3.0, 4.0, 5.0]
|
||||
\endcode
|
||||
\endverbatim
|
||||
|
||||
\author Sergey Bakhurin www.dsplib.org
|
||||
*******************************************************************************/
|
||||
|
@ -120,7 +120,7 @@ Output vector `y` keeps values corresponds to:
|
|||
Else \ref ERROR_CODE_GROUP "code error".
|
||||
|
||||
Two-times decimation example:
|
||||
\code
|
||||
\code{.cpp}
|
||||
double x[10] = {0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0};
|
||||
double y[5];
|
||||
int d = 2;
|
||||
|
@ -130,9 +130,9 @@ decimate(x, 10, d, y, &cnt);
|
|||
\endcode
|
||||
As result variable `cnt` will be written value 5 and
|
||||
vector `y` will keep array:
|
||||
\code
|
||||
\verbatim
|
||||
c = [0.0, 2.0, 4.0, 6.0, 8.0]
|
||||
\endcode
|
||||
\endverbatim
|
||||
|
||||
\author Sergey Bakhurin www.dsplib.org
|
||||
*******************************************************************************/
|
||||
|
@ -194,7 +194,7 @@ Output vector `y` keeps values corresponds to:
|
|||
Else \ref ERROR_CODE_GROUP "code error".
|
||||
|
||||
Two-times complex vector decimation example:
|
||||
\code
|
||||
\code{.cpp}
|
||||
compex_t x[10] = {{0.0, 0.0}, {1.0, 1.0}, {2.0, 2.0}, {3.0, 3.0}, {4.0, 4.0},
|
||||
{5.0, 5.0}, {6.0, 6.0}, {7.0, 7.0}, {8.0, 8.0}, {9.0, 9.0}};
|
||||
compex_t y[5];
|
||||
|
@ -205,9 +205,9 @@ decimate_cmplx(x, 10, d, y, &cnt);
|
|||
\endcode
|
||||
As result variable `cnt` will be written value 5 and
|
||||
vector `y` will keep array:
|
||||
\code
|
||||
\verbatim
|
||||
c = [0.0+0.0j, 2.0+2.0j, 4.0+4.0j, 6.0+6.0j, 8.0+8.0j]
|
||||
\endcode
|
||||
\endverbatim
|
||||
|
||||
\author Sergey Bakhurin www.dsplib.org
|
||||
*******************************************************************************/
|
||||
|
@ -238,7 +238,44 @@ int DSPL_API decimate_cmplx(complex_t* x, int n, int d, complex_t* y, int* cnt)
|
|||
|
||||
|
||||
/******************************************************************************
|
||||
Find max(|a|)
|
||||
\ingroup SPEC_MATH_STAT_GROUP
|
||||
\fn int find_max_abs(double* a, int n, double* m, int* ind)
|
||||
\brief Find maximum absolute value from the real vector `a`
|
||||
|
||||
Function searches maximum absolute value in the real vector `a`.
|
||||
This value writes to the address `m` and index keeps to te address `ind`.
|
||||
|
||||
\param[in] a Pointer to the real vector `a`.<BR>
|
||||
Vector size is `[n x 1]`.<BR><BR>
|
||||
|
||||
\param[in] n Size of the input vector `a`.<BR><BR>
|
||||
|
||||
|
||||
\param[out] m Pointer to the variable which keeps vector `a`
|
||||
maximum absolute value.<BR>
|
||||
Pointer can be `NULL`, maximum value will not return
|
||||
in this case.<BR><BR>
|
||||
|
||||
\param[out] ind Pointer to the variable which keeps index of a
|
||||
maximum absolute value inside vector `a`.<BR>
|
||||
Pointer can be `NULL`, index will not return
|
||||
in this case.<BR><BR>
|
||||
\return
|
||||
`RES_OK` if function calculates successfully,
|
||||
else \ref ERROR_CODE_GROUP "code error".
|
||||
|
||||
Example:
|
||||
\code{.cpp}
|
||||
double a[5] = {0.0, 2.0, -5.0, 4.0, 2.0};
|
||||
double m;
|
||||
int ind;
|
||||
find_max_abs(a, 5, &m, &ind);
|
||||
printf("\n\nmax absolute value: %8.1f (index %d)", m, ind);
|
||||
\endcode
|
||||
As result the variable `m` will keep value `5`,
|
||||
and variable `ind` will keep `2`.
|
||||
|
||||
\author Sergey Bakhurin www.dsplib.org
|
||||
*******************************************************************************/
|
||||
int DSPL_API find_max_abs(double* a, int n, double* m, int* ind)
|
||||
{
|
||||
|
@ -254,7 +291,7 @@ int DSPL_API find_max_abs(double* a, int n, double* m, int* ind)
|
|||
{
|
||||
if(fabs(a[k]) > t)
|
||||
{
|
||||
t = a[k];
|
||||
t = fabs(a[k]);
|
||||
i = k;
|
||||
}
|
||||
}
|
||||
|
@ -268,7 +305,50 @@ int DSPL_API find_max_abs(double* a, int n, double* m, int* ind)
|
|||
|
||||
|
||||
/******************************************************************************
|
||||
Flip real array in place
|
||||
\ingroup SPEC_MATH_COMMON_GROUP
|
||||
\fn int flipip(double* x, int n)
|
||||
\brief Flip real vector `x` in place
|
||||
|
||||
Function flips real vector `x` length `n` in the memory
|
||||
<BR>
|
||||
For example real vector `x` length 6:<BR>
|
||||
\verbatim
|
||||
x = [0, 1, 2, 3, 4, 5]
|
||||
\endverbatim
|
||||
After flipping it will be as follow:
|
||||
\verbatim
|
||||
x = [5, 4, 3, 2, 1, 0]
|
||||
\endverbatim
|
||||
|
||||
\param[in, out] x Pointer to the real vector `x`.<BR>
|
||||
Vector size is `[n x 1]`.<BR>
|
||||
Flipped vector will be on the same address.<BR>
|
||||
|
||||
\param[in] n Length of the vector `x`.<BR><BR>
|
||||
|
||||
\return
|
||||
`RES_OK` if function returns successfully.<BR>
|
||||
Else \ref ERROR_CODE_GROUP "error code".
|
||||
|
||||
Example:
|
||||
\code{.cpp}
|
||||
double x[5] = {0.0, 1.0, 2.0, 3.0, 4.0};
|
||||
int i;
|
||||
for(i = 0; i < 5; i++)
|
||||
printf("%6.1f ", x[i]);
|
||||
flipip(x, 5);
|
||||
printf("\n");
|
||||
for(i = 0; i < 5; i++)
|
||||
printf("%6.1f ", x[i]);
|
||||
\endcode
|
||||
<BR>
|
||||
Program result:
|
||||
\verbatim
|
||||
0.0 1.0 2.0 3.0 4.0
|
||||
4.0 3.0 2.0 1.0 0.0
|
||||
\endverbatim
|
||||
|
||||
\author Sergey Bakhurin www.dsplib.org
|
||||
*******************************************************************************/
|
||||
int DSPL_API flipip(double* x, int n)
|
||||
{
|
||||
|
@ -291,7 +371,49 @@ int DSPL_API flipip(double* x, int n)
|
|||
|
||||
|
||||
/******************************************************************************
|
||||
Flip complex array in place
|
||||
\ingroup SPEC_MATH_COMMON_GROUP
|
||||
\fn int flipip_cmplx(complex_t* x, int n)
|
||||
\brief Flip complex vector `x` in place
|
||||
|
||||
Function flips complex vector `x` length `n` in the memory
|
||||
<BR>
|
||||
For example complex vector `x` length 6:<BR>
|
||||
\verbatim
|
||||
x = [0+0j, 1+1j, 2+2j, 3+3j, 4+4j, 5+5j]
|
||||
\endverbatim
|
||||
After flipping it will be as follow:
|
||||
\verbatim
|
||||
x = [5+5j, 4+4j, 3+3j, 2+2j, 1+1j, 0+0j]
|
||||
\endverbatim
|
||||
|
||||
\param[in, out] x Pointer to the complex vector `x`.<BR>
|
||||
Vector size is `[n x 1]`.<BR>
|
||||
Flipped vector will be on the same address.<BR>
|
||||
|
||||
\param[in] n Length of the vector `x`.<BR><BR>
|
||||
|
||||
\return
|
||||
`RES_OK` if function returns successfully.<BR>
|
||||
Else \ref ERROR_CODE_GROUP "error code".
|
||||
|
||||
Example:
|
||||
\code{.cpp}
|
||||
complex_t y[5] = {{0.0, 0.0}, {1.0, 1.0}, {2.0, 2.0}, {3.0, 3.0}, {4.0, 4.0}};
|
||||
for(i = 0; i < 5; i++)
|
||||
printf("%6.1f%+.1fj ", RE(y[i]), IM(y[i]));
|
||||
flipip_cmplx(y, 5);
|
||||
printf("\n");
|
||||
for(i = 0; i < 5; i++)
|
||||
printf("%6.1f%+.1fj ", RE(y[i]), IM(y[i]));
|
||||
\endcode
|
||||
<BR>
|
||||
Program result:
|
||||
\verbatim
|
||||
0.0+0.0j 1.0+1.0j 2.0+2.0j 3.0+3.0j 4.0+4.0j
|
||||
4.0+4.0j 3.0+3.0j 2.0+2.0j 1.0+1.0j 0.0+0.0j
|
||||
\endverbatim
|
||||
|
||||
\author Sergey Bakhurin www.dsplib.org
|
||||
*******************************************************************************/
|
||||
int DSPL_API flipip_cmplx(complex_t* x, int n)
|
||||
{
|
||||
|
@ -319,7 +441,48 @@ int DSPL_API flipip_cmplx(complex_t* x, int n)
|
|||
|
||||
|
||||
/******************************************************************************
|
||||
Verif double
|
||||
\ingroup SPEC_MATH_COMMON_GROUP
|
||||
\fn int verif(double* x, double* y, size_t n, double eps, double* err)
|
||||
\brief Real arrays verification
|
||||
|
||||
Function calculates a maximum relative error between two real arrays `x`
|
||||
and `y` (both length equals `n`):
|
||||
|
||||
\f[
|
||||
e = \max \left( \frac{|x(k) - y(k)| }{ |x(k)|} \right), \quad if \quad |x(k)| > 0,
|
||||
\f]
|
||||
or
|
||||
\f[
|
||||
e = \max(|x(k) - y(k)| ), ~\qquad if \quad~|x(k)| = 0,
|
||||
\f]
|
||||
Return `DSPL_VERIF_SUCCESS` if maximum relative error \f$ e\f$ less than `eps`.
|
||||
Else returns `DSPL_VERIF_FAILED`.<BR>
|
||||
|
||||
This function can be used for algorithms verification if vector `x` is user
|
||||
algorithm result and vector `y` -- reference vector.
|
||||
|
||||
\param[in] x Pointer to the first vector `x`.<BR>
|
||||
Vector size is `[n x 1]`.<BR><BR>
|
||||
|
||||
\param[in] y Pointer to the second vector `y`.<BR>
|
||||
Vector size is `[n x 1]`.<BR><BR>
|
||||
|
||||
\param[in] n Size of vectors `x` and `y`.<BR><BR>
|
||||
|
||||
\param[in] eps Relative error threshold.<BR>
|
||||
If error less than `eps`, then function returns
|
||||
`DSPL_VERIF_SUCCESS`, else `DSPL_VERIF_FAILED`. <BR><BR>
|
||||
|
||||
\param[in, out] err Pointer to the variable which keep
|
||||
maximum relative error.<BR>
|
||||
Pointer can be `NULL`, maximum error will not be returned
|
||||
in this case.<BR><BR>
|
||||
|
||||
\return
|
||||
`DSPL_VERIF_SUCCESS` if maximum relative error less than `eps`.<BR>
|
||||
Otherwise `DSPL_VERIF_FAILED`.
|
||||
|
||||
\author Sergey Bakhurin www.dsplib.org
|
||||
*******************************************************************************/
|
||||
int DSPL_API verif(double* x, double* y, size_t n, double eps, double* err)
|
||||
{
|
||||
|
@ -359,7 +522,49 @@ int DSPL_API verif(double* x, double* y, size_t n, double eps, double* err)
|
|||
|
||||
|
||||
/******************************************************************************
|
||||
Verif double
|
||||
\ingroup SPEC_MATH_COMMON_GROUP
|
||||
\fn int verif_cmplx(complex_t* x, complex_t* y, size_t n,
|
||||
double eps, double* err)
|
||||
\brief Complex arrays verification
|
||||
|
||||
Function calculates a maximum relative error between two complex arrays `x`
|
||||
and `y` (both length equals `n`):
|
||||
|
||||
\f[
|
||||
e = \max \left( \frac{|x(k) - y(k)| }{ |x(k)|} \right), \quad if \quad |x(k)| > 0,
|
||||
\f]
|
||||
or
|
||||
\f[
|
||||
e = \max(|x(k) - y(k)| ), ~\qquad if \quad~|x(k)| = 0,
|
||||
\f]
|
||||
Return `DSPL_VERIF_SUCCESS` if maximum relative error \f$ e\f$ less than `eps`.
|
||||
Else returns `DSPL_VERIF_FAILED`.<BR>
|
||||
|
||||
This function can be used for algorithms verification if vector `x` is user
|
||||
algorithm result and vector `y` -- reference vector.
|
||||
|
||||
\param[in] x Pointer to the first vector `x`.<BR>
|
||||
Vector size is `[n x 1]`.<BR><BR>
|
||||
|
||||
\param[in] y Pointer to the second vector `y`.<BR>
|
||||
Vector size is `[n x 1]`.<BR><BR>
|
||||
|
||||
\param[in] n Size of vectors `x` and `y`.<BR><BR>
|
||||
|
||||
\param[in] eps Relative error threshold.<BR>
|
||||
If error less than `eps`, then function returns
|
||||
`DSPL_VERIF_SUCCESS`, else `DSPL_VERIF_FAILED`. <BR><BR>
|
||||
|
||||
\param[in, out] err Pointer to the variable which keep
|
||||
maximum relative error.<BR>
|
||||
Pointer can be `NULL`, maximum error will not be returned
|
||||
in this case.<BR><BR>
|
||||
|
||||
\return
|
||||
`DSPL_VERIF_SUCCESS` if maximum relative error less than `eps`.<BR>
|
||||
Otherwise `DSPL_VERIF_FAILED`.
|
||||
|
||||
\author Sergey Bakhurin www.dsplib.org
|
||||
*******************************************************************************/
|
||||
int DSPL_API verif_cmplx(complex_t* x, complex_t* y, size_t n,
|
||||
double eps, double* err)
|
||||
|
|
104
dspl/src/cheby.c
104
dspl/src/cheby.c
|
@ -25,7 +25,55 @@
|
|||
|
||||
|
||||
/******************************************************************************
|
||||
Chebyshev polynomials of the first kind
|
||||
\ingroup SPEC_MATH_TRANSCEND
|
||||
\fn int cheby_poly1(double* x, int n, int ord, double* y)
|
||||
\brief Chebyshev polynomial of the first kind order `ord`
|
||||
|
||||
Function calculates Chebyshev polynomial \f$ C_ord(x)\f$ of the first kind
|
||||
order `ord` for the real vector `x` (length `n`) by recurrent equation:
|
||||
\f[
|
||||
C_ord(x) = 2 x C_{ord-1}(x) - C_{ord-2}(x),
|
||||
\f]
|
||||
where \f$ C_0(x) = 1 \f$, \f$ C_1(x) = x\f$
|
||||
|
||||
\param[in] x Pointer to the real argument vector `x`.<BR>
|
||||
Vector size is `[n x 1]`.<BR><BR>
|
||||
|
||||
\param[in] n Size of vectors `x` and `y`.<BR><BR>
|
||||
|
||||
\param[in] ord Chebyshev polynomial order.<BR><BR>
|
||||
|
||||
\param[out] y Pointer to the Chebyshev polynomial values,
|
||||
corresponds to the argument `x`.<BR>
|
||||
Vector size is `[n x 1]`.<BR>
|
||||
Memory must be allocated.<BR><BR>
|
||||
|
||||
\return
|
||||
`RES_OK` if Chebyshev polynomial is calculated successfully.<BR>
|
||||
Else \ref ERROR_CODE_GROUP "code error".<BR>
|
||||
|
||||
Example:
|
||||
|
||||
\include cheby_poly1_test.c
|
||||
|
||||
<BR><BR>
|
||||
Text files will be created in `dat` directory:<BR>
|
||||
|
||||
<pre>
|
||||
cheby_poly1_ord1.txt
|
||||
cheby_poly1_ord2.txt
|
||||
cheby_poly1_ord3.txt
|
||||
cheby_poly1_ord4.txt
|
||||
</pre>
|
||||
|
||||
GNUPLOT package will create Chebyshev polynomials plot from saved text-files:
|
||||
|
||||
\image html cheby_poly1.png
|
||||
|
||||
GNUPLOT script is follow:
|
||||
\include cheby_poly1.plt
|
||||
|
||||
\author Sergey Bakhurin www.dsplib.org
|
||||
*******************************************************************************/
|
||||
int DSPL_API cheby_poly1(double* x, int n, int ord, double* y)
|
||||
{
|
||||
|
@ -73,7 +121,55 @@ int DSPL_API cheby_poly1(double* x, int n, int ord, double* y)
|
|||
|
||||
|
||||
/******************************************************************************
|
||||
Chebyshev polynomials of the second kind
|
||||
\ingroup SPEC_MATH_TRANSCEND
|
||||
\fn int cheby_poly2(double* x, int n, int ord, double* y)
|
||||
\brief Chebyshev polynomial of the second kind order `ord`
|
||||
|
||||
Function calculates Chebyshev polynomial \f$ U_ord(x)\f$ of the first kind
|
||||
order `ord` for the real vector `x` (length `n`) by recurrent equation:
|
||||
\f[
|
||||
U_ord(x) = 2 x U_{ord-1}(x) - U_{ord-2}(x),
|
||||
\f]
|
||||
where \f$ U_0(x) = 1 \f$, \f$ U_1(x) = 2x\f$
|
||||
|
||||
\param[in] x Pointer to the real argument vector `x`.<BR>
|
||||
Vector size is `[n x 1]`.<BR><BR>
|
||||
|
||||
\param[in] n Size of vectors `x` and `y`.<BR><BR>
|
||||
|
||||
\param[in] ord Chebyshev polynomial order.<BR><BR>
|
||||
|
||||
\param[out] y Pointer to the Chebyshev polynomial values,
|
||||
corresponds to the argument `x`.<BR>
|
||||
Vector size is `[n x 1]`.<BR>
|
||||
Memory must be allocated.<BR><BR>
|
||||
|
||||
\return
|
||||
`RES_OK` if Chebyshev polynomial is calculated successfully.<BR>
|
||||
Else \ref ERROR_CODE_GROUP "code error".<BR>
|
||||
|
||||
Example:
|
||||
|
||||
\include cheby_poly2_test.c
|
||||
|
||||
<BR><BR>
|
||||
Text files will be created in `dat` directory:<BR>
|
||||
|
||||
<pre>
|
||||
cheby_poly2_ord1.txt
|
||||
cheby_poly2_ord2.txt
|
||||
cheby_poly2_ord3.txt
|
||||
cheby_poly2_ord4.txt
|
||||
</pre>
|
||||
|
||||
GNUPLOT package will create Chebyshev polynomials plot from saved text-files:
|
||||
|
||||
\image html cheby_poly2.png
|
||||
|
||||
GNUPLOT script is follow:
|
||||
\include cheby_poly2.plt
|
||||
|
||||
\author Sergey Bakhurin www.dsplib.org
|
||||
*******************************************************************************/
|
||||
int DSPL_API cheby_poly2(double* x, int n, int ord, double* y)
|
||||
{
|
||||
|
@ -99,7 +195,7 @@ int DSPL_API cheby_poly2(double* x, int n, int ord, double* y)
|
|||
{
|
||||
for(k = 0; k < n; k++)
|
||||
{
|
||||
y[k] = 2.0*x[n];
|
||||
y[k] = 2.0*x[k];
|
||||
};
|
||||
return RES_OK;
|
||||
}
|
||||
|
@ -107,7 +203,7 @@ int DSPL_API cheby_poly2(double* x, int n, int ord, double* y)
|
|||
for(k = 0; k < n; k++)
|
||||
{
|
||||
m = 2;
|
||||
t[1] = 2.0*x[n];
|
||||
t[1] = 2.0*x[k];
|
||||
t[0] = 1.0;
|
||||
while(m <= ord)
|
||||
{
|
||||
|
|
|
@ -26,7 +26,56 @@
|
|||
|
||||
|
||||
/******************************************************************************
|
||||
Acos complex
|
||||
\ingroup SPEC_MATH_TRIG_GROUP
|
||||
\fn int acos_cmplx(complex_t* x, int n, complex_t *y)
|
||||
\brief The inverse of the cosine function the complex vector argument `x`
|
||||
|
||||
Function calculates the inverse of the cosine function as:<BR>
|
||||
|
||||
\f[
|
||||
\textrm{Arccos}(x) = \frac{\pi}{2} - \textrm{Arcsin}(x) =
|
||||
\frac{\pi}{2} -j \textrm{Ln}\left( j x + \sqrt{1 - x^2} \right)
|
||||
\f]
|
||||
|
||||
|
||||
\param[in] x Pointer to the argument vector `x`.<BR>
|
||||
Vector size is `[n x 1]`. <BR><BR>
|
||||
|
||||
\param[in] n Input vector `x` and the inverse cosine vector `y` size.<BR><BR>
|
||||
|
||||
|
||||
\param[out] y Pointer to the output complex vector `y`,
|
||||
corresponds to the input vector `x`.<BR>
|
||||
Vector size is `[n x 1]`. <BR>
|
||||
Memory must be allocated. <BR><BR>
|
||||
|
||||
\return
|
||||
`RES_OK` if function calculated successfully. <BR>
|
||||
Else \ref ERROR_CODE_GROUP "code error".<BR>
|
||||
|
||||
Example:<BR>
|
||||
\code{.cpp}
|
||||
complex_t x[3] = {{1.0, 2.0}, {3.0, 4.0}, {5.0, 6.0}};
|
||||
complex_t y[3];
|
||||
int k;
|
||||
|
||||
acos_cmplx(x, 3, y);
|
||||
|
||||
for(k = 0; k < 3; k++)
|
||||
printf("acos_cmplx(%.1f%+.1fj) = %.3f%+.3fj\n",
|
||||
RE(x[k]), IM(x[k]), RE(y[k]), IM(y[k]));
|
||||
\endcode
|
||||
<BR>
|
||||
|
||||
Output is:<BR>
|
||||
\verbatim
|
||||
acos_cmplx(1.0+2.0j) = 1.144-1.529j
|
||||
acos_cmplx(3.0+4.0j) = 0.937-2.306j
|
||||
acos_cmplx(5.0+6.0j) = 0.880-2.749j
|
||||
\endverbatim
|
||||
|
||||
\author
|
||||
Sergey Bakhurin www.dsplib.org
|
||||
*******************************************************************************/
|
||||
int DSPL_API acos_cmplx(complex_t* x, int n, complex_t *y)
|
||||
{
|
||||
|
@ -49,7 +98,55 @@ int DSPL_API acos_cmplx(complex_t* x, int n, complex_t *y)
|
|||
|
||||
|
||||
/******************************************************************************
|
||||
Asin complex
|
||||
\ingroup SPEC_MATH_TRIG_GROUP
|
||||
\fn int asin_cmplx(complex_t* x, int n, complex_t *y)
|
||||
\brief The inverse of the sine function the complex vector argument `x`
|
||||
|
||||
Function calculates the inverse of the sine function as:<BR>
|
||||
|
||||
\f[
|
||||
\textrm{Arcsin}(x) = j \textrm{Ln}\left( j x + \sqrt{1 - x^2} \right)
|
||||
\f]
|
||||
|
||||
|
||||
\param[in] x Pointer to the argument vector `x`.<BR>
|
||||
Vector size is `[n x 1]`. <BR><BR>
|
||||
|
||||
\param[in] n Input vector `x` and the inverse sine vector `y` size.<BR><BR>
|
||||
|
||||
|
||||
\param[out] y Pointer to the output complex vector `y`,
|
||||
corresponds to the input vector `x`.<BR>
|
||||
Vector size is `[n x 1]`. <BR>
|
||||
Memory must be allocated. <BR><BR>
|
||||
|
||||
\return
|
||||
`RES_OK` if function calculated successfully. <BR>
|
||||
Else \ref ERROR_CODE_GROUP "code error".<BR>
|
||||
|
||||
Example:<BR>
|
||||
\code{.cpp}
|
||||
complex_t x[3] = {{1.0, 2.0}, {3.0, 4.0}, {5.0, 6.0}};
|
||||
complex_t y[3];
|
||||
int k;
|
||||
|
||||
asin_cmplx(x, 3, y);
|
||||
for(k = 0; k < 3; k++)
|
||||
printf("asin_cmplx(%.1f%+.1fj) = %.3f%+.3fj\n",
|
||||
RE(x[k]), IM(x[k]), RE(y[k]), IM(y[k]));
|
||||
|
||||
\endcode
|
||||
<BR>
|
||||
|
||||
Output is:<BR>
|
||||
\verbatim
|
||||
asin_cmplx(1.0+2.0j) = 0.427+1.529j
|
||||
asin_cmplx(3.0+4.0j) = 0.634+2.306j
|
||||
asin_cmplx(5.0+6.0j) = 0.691+2.749j
|
||||
\endverbatim
|
||||
|
||||
\author
|
||||
Sergey Bakhurin www.dsplib.org
|
||||
*******************************************************************************/
|
||||
int DSPL_API asin_cmplx(complex_t* x, int n, complex_t *y)
|
||||
{
|
||||
|
@ -63,11 +160,11 @@ int DSPL_API asin_cmplx(complex_t* x, int n, complex_t *y)
|
|||
for(k = 0; k < n; k++)
|
||||
{
|
||||
RE(tmp) = 1.0 - CMRE(x[k], x[k]); // 1-x[k]^2
|
||||
IM(tmp) = - CMIM(x[k], x[k]); // 1-x[k]^2
|
||||
sqrt_cmplx(&tmp, 1, y+k); // sqrt(1 - x[k]^2)
|
||||
IM(tmp) = - CMIM(x[k], x[k]); // 1-x[k]^2
|
||||
sqrt_cmplx(&tmp, 1, y+k); // sqrt(1 - x[k]^2)
|
||||
RE(y[k]) -= IM(x[k]); // j * x[k] + sqrt(1 - x[k]^2)
|
||||
IM(y[k]) += RE(x[k]); // j * x[k] + sqrt(1 - x[k]^2)
|
||||
log_cmplx(y+k, 1, &tmp); // log( j * x[k] + sqrt(1 - x[k]^2) )
|
||||
log_cmplx(y+k, 1, &tmp); // log( j * x[k] + sqrt(1 - x[k]^2) )
|
||||
RE(y[k]) = IM(tmp); // -j * log( j * x[k] + sqrt(1 - x[k]^2) )
|
||||
IM(y[k]) = -RE(tmp); // -j * log( j * x[k] + sqrt(1 - x[k]^2) )
|
||||
}
|
||||
|
@ -76,33 +173,53 @@ int DSPL_API asin_cmplx(complex_t* x, int n, complex_t *y)
|
|||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
convert double array to a complex array
|
||||
*******************************************************************************/
|
||||
int DSPL_API re2cmplx(double* x, int n, complex_t *y)
|
||||
{
|
||||
int k;
|
||||
if(!x || !y)
|
||||
return ERROR_PTR;
|
||||
if(n < 1)
|
||||
return ERROR_SIZE;
|
||||
|
||||
for(k = 0; k < n; k++)
|
||||
{
|
||||
RE(y[k]) = x[k];
|
||||
IM(y[k]) = 0.0;
|
||||
}
|
||||
return RES_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
convert complex array to a re and im arrays
|
||||
\ingroup TYPES_GROUP
|
||||
\fn int cmplx2re(complex_t* x, int n, double* re, double* im)
|
||||
\brief Separate complex vector to the real and image vectors
|
||||
|
||||
Function fills `re` and `im` vectors corresponds to real and image
|
||||
parts of the input complex array `x`. <BR>
|
||||
|
||||
|
||||
\param[in] x Pointer to the real complex vector.<BR>
|
||||
Vector size is `[n x 1]`. <BR><BR>
|
||||
|
||||
\param[in] n Size of the input complex vector `x` and real and image
|
||||
vectors `re` and `im`.<BR><BR>
|
||||
|
||||
\param[out] re Pointer to the real part vector.<BR>
|
||||
Vector size is `[n x 1]`. <BR>
|
||||
Memory must be allocated. <BR><BR>
|
||||
|
||||
\param[out] im Pointer to the image part vector.<BR>
|
||||
Vector size is `[n x 1]`. <BR>
|
||||
Memory must be allocated. <BR><BR>
|
||||
|
||||
\return
|
||||
`RES_OK` if function converts complex vector successfully. <BR>
|
||||
Else \ref ERROR_CODE_GROUP "code error".<BR>
|
||||
|
||||
Example:<BR>
|
||||
\code{.cpp}
|
||||
complex_t x[3] = {{1.0, 2.0}, {3.0, 4.0}, {5.0, 6.0}};
|
||||
double re[3], im[3];
|
||||
|
||||
cmplx2re(x, 3, re, im);
|
||||
\endcode
|
||||
|
||||
Vectors `re` and `im` will contains:
|
||||
|
||||
\verbatim
|
||||
re[0] = 1.0; im[0] = 2.0;
|
||||
re[1] = 3.0; im[1] = 4.0;
|
||||
re[2] = 5.0; im[2] = 6.0;
|
||||
\endverbatim
|
||||
|
||||
\author Sergey Bakhurin. www.dsplib.org
|
||||
*******************************************************************************/
|
||||
int DSPL_API cmplx2re(complex_t* x, int n, double *re, double *im)
|
||||
int DSPL_API cmplx2re(complex_t* x, int n, double* re, double* im)
|
||||
{
|
||||
int k;
|
||||
if(!x)
|
||||
|
@ -127,9 +244,57 @@ int DSPL_API cmplx2re(complex_t* x, int n, double *re, double *im)
|
|||
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
Complex cosine
|
||||
\ingroup SPEC_MATH_TRIG_GROUP
|
||||
\fn int cos_cmplx(complex_t* x, int n, complex_t *y)
|
||||
\brief The cosine function the complex vector argument `x`
|
||||
|
||||
Function calculates the cosine function as:<BR>
|
||||
|
||||
\f[
|
||||
\textrm{cos}(x) = \frac{\exp(jx) + \exp(-jx)}{2}
|
||||
\f]
|
||||
|
||||
|
||||
\param[in] x Pointer to the argument vector `x`.<BR>
|
||||
Vector size is `[n x 1]`. <BR><BR>
|
||||
|
||||
\param[in] n Input vector `x` and the cosine vector `y` size.<BR><BR>
|
||||
|
||||
|
||||
\param[out] y Pointer to the output complex vector `y`,
|
||||
corresponds to the input vector `x`.<BR>
|
||||
Vector size is `[n x 1]`. <BR>
|
||||
Memory must be allocated. <BR><BR>
|
||||
|
||||
\return
|
||||
`RES_OK` if function calculated successfully. <BR>
|
||||
Else \ref ERROR_CODE_GROUP "code error".<BR>
|
||||
|
||||
Example:<BR>
|
||||
\code{.cpp}
|
||||
complex_t x[3] = {{1.0, 2.0}, {3.0, 4.0}, {5.0, 6.0}};
|
||||
complex_t y[3];
|
||||
int k;
|
||||
|
||||
cos_cmplx(x, 3, y);
|
||||
|
||||
for(k = 0; k < 3; k++)
|
||||
printf("cos_cmplx(%.1f%+.1fj) = %9.3f%+9.3fj\n",
|
||||
RE(x[k]), IM(x[k]), RE(y[k]), IM(y[k]));
|
||||
|
||||
\endcode
|
||||
<BR>
|
||||
|
||||
Output is:<BR>
|
||||
\verbatim
|
||||
cos_cmplx(1.0+2.0j) = 2.033 -3.052j
|
||||
cos_cmplx(3.0+4.0j) = -27.035 -3.851j
|
||||
cos_cmplx(5.0+6.0j) = 57.219 +193.428j
|
||||
\endverbatim
|
||||
|
||||
\author
|
||||
Sergey Bakhurin www.dsplib.org
|
||||
*******************************************************************************/
|
||||
int DSPL_API cos_cmplx(complex_t* x, int n, complex_t *y)
|
||||
{
|
||||
|
@ -155,6 +320,54 @@ int DSPL_API cos_cmplx(complex_t* x, int n, complex_t *y)
|
|||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
Logarithm complex
|
||||
*******************************************************************************/
|
||||
int DSPL_API log_cmplx(complex_t* x, int n, complex_t *y)
|
||||
{
|
||||
int k;
|
||||
if(!x || !y)
|
||||
return ERROR_PTR;
|
||||
if(n < 1)
|
||||
return ERROR_SIZE;
|
||||
|
||||
for(k = 0; k < n; k++)
|
||||
{
|
||||
RE(y[k]) = 0.5 * log(ABSSQR(x[k]));
|
||||
IM(y[k]) = atan2(IM(x[k]), RE(x[k]));
|
||||
}
|
||||
return RES_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
convert double array to a complex array
|
||||
*******************************************************************************/
|
||||
int DSPL_API re2cmplx(double* x, int n, complex_t* y)
|
||||
{
|
||||
int k;
|
||||
if(!x || !y)
|
||||
return ERROR_PTR;
|
||||
if(n < 1)
|
||||
return ERROR_SIZE;
|
||||
|
||||
for(k = 0; k < n; k++)
|
||||
{
|
||||
RE(y[k]) = x[k];
|
||||
IM(y[k]) = 0.0;
|
||||
}
|
||||
return RES_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
Complex cosine
|
||||
*******************************************************************************/
|
||||
|
@ -182,26 +395,6 @@ int DSPL_API sin_cmplx(complex_t* x, int n, complex_t *y)
|
|||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
Logarithm complex
|
||||
*******************************************************************************/
|
||||
int DSPL_API log_cmplx(complex_t* x, int n, complex_t *y)
|
||||
{
|
||||
int k;
|
||||
if(!x || !y)
|
||||
return ERROR_PTR;
|
||||
if(n < 1)
|
||||
return ERROR_SIZE;
|
||||
|
||||
for(k = 0; k < n; k++)
|
||||
{
|
||||
RE(y[k]) = 0.5 * log(ABSSQR(x[k]));
|
||||
IM(y[k]) = atan2(IM(x[k]), RE(x[k]));
|
||||
}
|
||||
return RES_OK;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/******************************************************************************
|
||||
|
|
|
@ -26,9 +26,6 @@
|
|||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*******************************************************************************
|
||||
Real vectors linear convolution
|
||||
*******************************************************************************/
|
||||
|
|
|
@ -31,8 +31,8 @@ Print DSPL info
|
|||
void DSPL_API dspl_info()
|
||||
{
|
||||
printf("\n\n D S P L - 2.0\n");
|
||||
printf(" version 2.18.10.05\n");
|
||||
printf("\n Copyright (C) 2015-2018\n");
|
||||
printf(" version 2.19.06.18\n");
|
||||
printf("\n Copyright (C) 2015-2019\n");
|
||||
printf(" Sergey Bakhurin www.dsplib.org\n\n");
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
set grid
|
||||
set xlabel "x"
|
||||
|
||||
set lmargin at screen 0.10
|
||||
set key left top
|
||||
set terminal pngcairo size 560,380 enhanced font 'Verdana,8'
|
||||
set output 'img/cheby_poly1.png'
|
||||
set ylabel "C_N(x)"
|
||||
set yrange [-1.5:1.5]
|
||||
plot 'dat/cheby_poly1_ord1.txt' with lines, \
|
||||
'dat/cheby_poly1_ord2.txt' with lines, \
|
||||
'dat/cheby_poly1_ord3.txt' with lines, \
|
||||
'dat/cheby_poly1_ord4.txt' with lines
|
||||
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
set grid
|
||||
set xlabel "x"
|
||||
|
||||
set lmargin at screen 0.10
|
||||
set key left top
|
||||
set terminal pngcairo size 560,380 enhanced font 'Verdana,8'
|
||||
set output 'img/cheby_poly2.png'
|
||||
set ylabel "C_N(x)"
|
||||
set yrange [-3.5:3.5]
|
||||
plot 'dat/cheby_poly2_ord1.txt' with lines, \
|
||||
'dat/cheby_poly2_ord2.txt' with lines, \
|
||||
'dat/cheby_poly2_ord3.txt' with lines, \
|
||||
'dat/cheby_poly2_ord4.txt' with lines
|
||||
|
||||
|
|
@ -26,6 +26,35 @@ int main()
|
|||
for (k = 0; k < n; k++)
|
||||
printf("%6.1f", d[k]);
|
||||
|
||||
// find max abs value
|
||||
double am[5] = {0.0, 2.0, -5.0, 4.0, 2.0};
|
||||
double m;
|
||||
int ind;
|
||||
err = find_max_abs(am, 5, &m, &ind);
|
||||
printf("\n\nmax absolute value: %8.1f (index %d)", m, ind);
|
||||
|
||||
|
||||
printf("\n\nFlipip function test:\n\n");
|
||||
double x[5] = {0.0, 1.0, 2.0, 3.0, 4.0};
|
||||
int i;
|
||||
for(i = 0; i < 5; i++)
|
||||
printf("%6.1f ", x[i]);
|
||||
flipip(x, 5);
|
||||
printf("\n");
|
||||
for(i = 0; i < 5; i++)
|
||||
printf("%6.1f ", x[i]);
|
||||
|
||||
|
||||
printf("\n\nflipip_cmplx function test:\n\n");
|
||||
complex_t y[5] = {{0.0, 0.0}, {1.0, 1.0}, {2.0, 2.0}, {3.0, 3.0}, {4.0, 4.0}};
|
||||
for(i = 0; i < 5; i++)
|
||||
printf("%6.1f%+.1fj ", RE(y[i]), IM(y[i]));
|
||||
flipip_cmplx(y, 5);
|
||||
printf("\n");
|
||||
for(i = 0; i < 5; i++)
|
||||
printf("%6.1f%+.1fj ", RE(y[i]), IM(y[i]));
|
||||
|
||||
|
||||
dspl_free(handle); // free dspl handle
|
||||
|
||||
return err;
|
||||
|
|
|
@ -0,0 +1,28 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "dspl.h"
|
||||
|
||||
#define N 250
|
||||
|
||||
int main()
|
||||
{
|
||||
void* handle; // DSPL handle
|
||||
handle = dspl_load(); // Load DSPL function
|
||||
|
||||
double x[N], y[N];
|
||||
int ord;
|
||||
char fn[64];
|
||||
|
||||
linspace(-1.0, 1.0, N, DSPL_SYMMETRIC, x);
|
||||
for(ord = 1; ord < 5; ord++)
|
||||
{
|
||||
cheby_poly1(x, N, ord, y);
|
||||
sprintf(fn, "dat/cheby_poly1_ord%d.txt", ord);
|
||||
writetxt(x,y,N,fn);
|
||||
}
|
||||
|
||||
dspl_free(handle); // free dspl handle
|
||||
|
||||
return system("gnuplot gnuplot/cheby_poly1.plt");
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "dspl.h"
|
||||
|
||||
#define N 250
|
||||
|
||||
int main()
|
||||
{
|
||||
void* handle; // DSPL handle
|
||||
handle = dspl_load(); // Load DSPL function
|
||||
|
||||
double x[N], y[N];
|
||||
int ord;
|
||||
char fn[64];
|
||||
|
||||
linspace(-1.0, 1.0, N, DSPL_SYMMETRIC, x);
|
||||
for(ord = 1; ord < 5; ord++)
|
||||
{
|
||||
cheby_poly2(x, N, ord, y);
|
||||
sprintf(fn, "dat/cheby_poly2_ord%d.txt", ord);
|
||||
writetxt(x,y,N,fn);
|
||||
}
|
||||
|
||||
dspl_free(handle); // free dspl handle
|
||||
|
||||
return system("gnuplot gnuplot/cheby_poly2.plt");
|
||||
}
|
|
@ -0,0 +1,39 @@
|
|||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "dspl.h"
|
||||
|
||||
int main()
|
||||
{
|
||||
void* handle; // DSPL handle
|
||||
handle = dspl_load(); // Load DSPL function
|
||||
|
||||
complex_t x[3] = {{1.0, 2.0}, {3.0, 4.0}, {5.0, 6.0}};
|
||||
complex_t y[3];
|
||||
int k;
|
||||
|
||||
printf("\n\nacos_cmplx\n---------------------------------\n");
|
||||
acos_cmplx(x, 3, y);
|
||||
for(k = 0; k < 3; k++)
|
||||
printf("acos_cmplx(%.1f%+.1fj) = %.3f%+.3fj\n",
|
||||
RE(x[k]), IM(x[k]), RE(y[k]), IM(y[k]));
|
||||
|
||||
printf("\n\nasin_cmplx\n---------------------------------\n");
|
||||
asin_cmplx(x, 3, y);
|
||||
for(k = 0; k < 3; k++)
|
||||
printf("asin_cmplx(%.1f%+.1fj) = %.3f%+.3fj\n",
|
||||
RE(x[k]), IM(x[k]), RE(y[k]), IM(y[k]));
|
||||
|
||||
printf("\n\ncos_cmplx\n---------------------------------\n");
|
||||
cos_cmplx(x, 3, y);
|
||||
for(k = 0; k < 3; k++)
|
||||
printf("cos_cmplx(%.1f%+.1fj) = %9.3f%+9.3fj\n",
|
||||
RE(x[k]), IM(x[k]), RE(y[k]), IM(y[k]));
|
||||
|
||||
|
||||
dspl_free(handle); // free dspl handle
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Ładowanie…
Reference in New Issue