Skip to content

Commit

Permalink
fix #374 num2str builtin optimized
Browse files Browse the repository at this point in the history
  • Loading branch information
Nelson-numerical-software committed Jan 24, 2021
1 parent 65442c4 commit 2aa2a1c
Show file tree
Hide file tree
Showing 29 changed files with 18,420 additions and 88 deletions.
6 changes: 5 additions & 1 deletion CHANGELOG.md
Expand Up @@ -4,6 +4,8 @@

- `qt_constant` builtin: returns value of an Qt constant.

- [#374](http://github.com/Nelson-numerical-software/nelson/issues/374): `num2str` builtin: converts numbers to character array.

## Bug Fixes:

- [#388](http://github.com/Nelson-numerical-software/nelson/issues/388): Windows x64 build failed (elementary_functions module was too big).
Expand All @@ -16,6 +18,8 @@

- Eigen 3.3.9 used.

- fix cirle CI build.

- [#394](http://github.com/Nelson-numerical-software/nelson/issues/394): Upgrade socket.IO dependency to v3.0.

- [#367](http://github.com/Nelson-numerical-software/nelson/issues/367): add fftw_init_threads and fftw_plan_with_nthreads to MKL wrapper for FFTW.
Expand All @@ -24,7 +28,7 @@

- [#355](http://github.com/Nelson-numerical-software/nelson/issues/355): Qt6 support.

- fix cirle CI build.
- [#317](http://github.com/Nelson-numerical-software/nelson/issues/317): uses fmtlib.

## Previous changelog:

Expand Down
8 changes: 8 additions & 0 deletions THIRDPARTY.md
Expand Up @@ -298,3 +298,11 @@ PicoSHA2 - a C++ SHA256 hash generator
> https://github.com/okdshin/PicoSHA2
> https://github.com/okdshin/PicoSHA2/blob/master/LICENSE MIT license
- fmtlib

A modern formatting library

> https://fmt.dev/latest/index.html
> https://github.com/fmtlib/fmt/blob/master/LICENSE.rst MIT license
2 changes: 2 additions & 0 deletions modules/string/CMakeLists.txt
Expand Up @@ -30,6 +30,7 @@ include_directories(
${EIGEN3_INCLUDE_DIR}
${Boost_INCLUDE_DIRS}
${CMAKE_CURRENT_SOURCE_DIR}/src/include
${CMAKE_CURRENT_SOURCE_DIR}/src/fmt/include
${CMAKE_CURRENT_SOURCE_DIR}/../types/src/include
${CMAKE_CURRENT_SOURCE_DIR}/../error_manager/src/include
${CMAKE_CURRENT_SOURCE_DIR}/../stream_manager/src/include
Expand All @@ -41,6 +42,7 @@ include_directories(
${CMAKE_CURRENT_SOURCE_DIR}/../data_structures/src/include)
# ==============================================================================
file(GLOB STRING_SRC "${CMAKE_CURRENT_SOURCE_DIR}/src/cpp/*.cpp")
file(GLOB STRING_SRC "${CMAKE_CURRENT_SOURCE_DIR}/src/fmt/src/*.cc")
# ==============================================================================
add_library(${module_library_name} SHARED ${STRING_SRC})
# ==============================================================================
Expand Down
10 changes: 5 additions & 5 deletions modules/string/builtin/cpp/num2strBuiltin.cpp
Expand Up @@ -51,13 +51,13 @@ Nelson::StringGateway::num2strBuiltin(Evaluator* eval, int nLhs, const ArrayOfVe
bool needToOverload;
if (argIn.size() == 2) {
ArrayOf arg1 = argIn[1];
if (argIn[1].isNumeric()) {
if (argIn[1].isNumeric()) {
double N = arg1.getContentAsDoubleScalar();
res = NumberToString(argIn[0], N, needToOverload);
res = NumberToString(argIn[0], N, needToOverload);
} else {
std::wstring format = arg1.getContentAsWideString();
res = NumberToString(argIn[0], format, needToOverload);
}
std::wstring format = arg1.getContentAsWideString();
res = NumberToString(argIn[0], format, needToOverload);
}
} else {
res = NumberToString(argIn[0], needToOverload);
}
Expand Down
2 changes: 1 addition & 1 deletion modules/string/builtin/include/num2strBuiltin.hpp
Expand Up @@ -30,7 +30,7 @@
//=============================================================================
namespace Nelson {
//=============================================================================
namespace StringGateway {
namespace StringGateway {
ArrayOfVector
num2strBuiltin(Evaluator* eval, int nLhs, const ArrayOfVector& argIn);
}
Expand Down
85 changes: 85 additions & 0 deletions modules/string/help/en_US/xml/num2str.xml
@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="UTF-8"?>
<xmldoc>
<copyright>SAME AS NELSON SOFTWARE</copyright>

<language>en_US</language>
<keyword>num2str</keyword>
<short_description>Converts numbers to character array.</short_description>
<syntax>
<syntax_item>S = num2str(A)</syntax_item>
<syntax_item>S = num2str(A, precision)</syntax_item>
<syntax_item>S = num2str(A, formatSpec)</syntax_item>

</syntax>

<param_input>
<param_input_item>
<param_name>A</param_name>
<param_description>a numerical matrix or logical.</param_description>
</param_input_item>

<param_input_item>
<param_name>precision</param_name>
<param_description>an positive integer value: Maximum number of significant digits.</param_description>
</param_input_item>

<param_input_item>
<param_name>formatSpec</param_name>
<param_description>a character array: Format of output fields.</param_description>
</param_input_item>

</param_input>

<param_output>
<param_output_item>
<param_name>S</param_name>
<param_description>a character array: text representation of input array.</param_description>
</param_output_item>
</param_output>

<description>
<p><b>num2str</b> converts numbers to character array.</p>
<p><b>num2str</b> trims any leading spaces from a character array. For better control over the results, use <b>sprintf</b>.</p>
</description>

<used_function></used_function>
<bibliography></bibliography>

<examples>

<example_item>
<example_item_type>nelson</example_item_type>
<example_item_description></example_item_description>
<example_item_data><![CDATA[R = num2str(pi, 4)
R = num2str(magic(3))]]>
</example_item_data>
</example_item>

</examples>

<see_also>
<see_also_item>
<link linkend="${string}int2str">int2str</link>
</see_also_item>
<see_also_item>
<link linkend="${string}sprintf">sprintf</link>
</see_also_item>

<see_also_item>
<link linkend="${string}mat2str">mat2str</link>
</see_also_item>
</see_also>

<history>
<history_item>
<history_version>1.0.0</history_version>
<history_description>initial version</history_description>
</history_item>
</history>

<authors>
<author_item>Allan CORNET</author_item>
</authors>
</xmldoc>


10 changes: 6 additions & 4 deletions modules/string/src/c/nlsString.vcxproj
Expand Up @@ -95,7 +95,7 @@
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;NLSSTRING_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(SolutionDir)modules/string/src/include;$(SolutionDir)modules/interpreter/src/include;$(SolutionDir)modules/types/src/include;$(SolutionDir)modules/stream_manager/src/include;$(SolutionDir)modules/elementary_functions/src/include;$(SolutionDir)modules/elementary_mathematics/src/include;$(SolutionDir)modules/error_manager/src/include;$(SolutionDir)modules/data_structures/src/include;$(SolutionDir)modules/characters_encoding/src/include;$(SolutionDir)modules/i18n/src/include;$(SolutionDir)../NelSon-thirdparty-$(PlatformName)/Eigen;$(SolutionDir)../NelSon-thirdparty-$(PlatformName)/Boost</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)modules/string/src/include;$(SolutionDir)modules/interpreter/src/include;$(SolutionDir)modules/types/src/include;$(SolutionDir)modules/stream_manager/src/include;$(SolutionDir)modules/elementary_functions/src/include;$(SolutionDir)modules/elementary_mathematics/src/include;$(SolutionDir)modules/error_manager/src/include;$(SolutionDir)modules/data_structures/src/include;$(SolutionDir)modules/characters_encoding/src/include;$(SolutionDir)modules/i18n/src/include;$(SolutionDir)../NelSon-thirdparty-$(PlatformName)/Eigen;$(SolutionDir)../NelSon-thirdparty-$(PlatformName)/Boost;$(SolutionDir)modules/string/src/fmt/include</AdditionalIncludeDirectories>
<OpenMPSupport>true</OpenMPSupport>
</ClCompile>
<Link>
Expand All @@ -112,7 +112,7 @@
<Optimization>Disabled</Optimization>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;NLSSTRING_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(SolutionDir)modules/string/src/include;$(SolutionDir)modules/interpreter/src/include;$(SolutionDir)modules/types/src/include;$(SolutionDir)modules/stream_manager/src/include;$(SolutionDir)modules/elementary_functions/src/include;$(SolutionDir)modules/elementary_mathematics/src/include;$(SolutionDir)modules/error_manager/src/include;$(SolutionDir)modules/data_structures/src/include;$(SolutionDir)modules/characters_encoding/src/include;$(SolutionDir)modules/i18n/src/include;$(SolutionDir)../NelSon-thirdparty-$(PlatformName)/Eigen;$(SolutionDir)../NelSon-thirdparty-$(PlatformName)/Boost</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)modules/string/src/include;$(SolutionDir)modules/interpreter/src/include;$(SolutionDir)modules/types/src/include;$(SolutionDir)modules/stream_manager/src/include;$(SolutionDir)modules/elementary_functions/src/include;$(SolutionDir)modules/elementary_mathematics/src/include;$(SolutionDir)modules/error_manager/src/include;$(SolutionDir)modules/data_structures/src/include;$(SolutionDir)modules/characters_encoding/src/include;$(SolutionDir)modules/i18n/src/include;$(SolutionDir)../NelSon-thirdparty-$(PlatformName)/Eigen;$(SolutionDir)../NelSon-thirdparty-$(PlatformName)/Boost;$(SolutionDir)modules/string/src/fmt/include</AdditionalIncludeDirectories>
<OpenMPSupport>true</OpenMPSupport>
</ClCompile>
<Link>
Expand All @@ -131,7 +131,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;NLSSTRING_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(SolutionDir)modules/string/src/include;$(SolutionDir)modules/interpreter/src/include;$(SolutionDir)modules/types/src/include;$(SolutionDir)modules/stream_manager/src/include;$(SolutionDir)modules/elementary_functions/src/include;$(SolutionDir)modules/elementary_mathematics/src/include;$(SolutionDir)modules/error_manager/src/include;$(SolutionDir)modules/data_structures/src/include;$(SolutionDir)modules/characters_encoding/src/include;$(SolutionDir)modules/i18n/src/include;$(SolutionDir)../NelSon-thirdparty-$(PlatformName)/Eigen;$(SolutionDir)../NelSon-thirdparty-$(PlatformName)/Boost</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)modules/string/src/include;$(SolutionDir)modules/interpreter/src/include;$(SolutionDir)modules/types/src/include;$(SolutionDir)modules/stream_manager/src/include;$(SolutionDir)modules/elementary_functions/src/include;$(SolutionDir)modules/elementary_mathematics/src/include;$(SolutionDir)modules/error_manager/src/include;$(SolutionDir)modules/data_structures/src/include;$(SolutionDir)modules/characters_encoding/src/include;$(SolutionDir)modules/i18n/src/include;$(SolutionDir)../NelSon-thirdparty-$(PlatformName)/Eigen;$(SolutionDir)../NelSon-thirdparty-$(PlatformName)/Boost;$(SolutionDir)modules/string/src/fmt/include</AdditionalIncludeDirectories>
<OpenMPSupport>true</OpenMPSupport>
</ClCompile>
<Link>
Expand All @@ -152,7 +152,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;NLSSTRING_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(SolutionDir)modules/string/src/include;$(SolutionDir)modules/interpreter/src/include;$(SolutionDir)modules/types/src/include;$(SolutionDir)modules/stream_manager/src/include;$(SolutionDir)modules/elementary_functions/src/include;$(SolutionDir)modules/elementary_mathematics/src/include;$(SolutionDir)modules/error_manager/src/include;$(SolutionDir)modules/data_structures/src/include;$(SolutionDir)modules/characters_encoding/src/include;$(SolutionDir)modules/i18n/src/include;$(SolutionDir)../NelSon-thirdparty-$(PlatformName)/Eigen;$(SolutionDir)../NelSon-thirdparty-$(PlatformName)/Boost</AdditionalIncludeDirectories>
<AdditionalIncludeDirectories>$(SolutionDir)modules/string/src/include;$(SolutionDir)modules/interpreter/src/include;$(SolutionDir)modules/types/src/include;$(SolutionDir)modules/stream_manager/src/include;$(SolutionDir)modules/elementary_functions/src/include;$(SolutionDir)modules/elementary_mathematics/src/include;$(SolutionDir)modules/error_manager/src/include;$(SolutionDir)modules/data_structures/src/include;$(SolutionDir)modules/characters_encoding/src/include;$(SolutionDir)modules/i18n/src/include;$(SolutionDir)../NelSon-thirdparty-$(PlatformName)/Eigen;$(SolutionDir)../NelSon-thirdparty-$(PlatformName)/Boost;$(SolutionDir)modules/string/src/fmt/include</AdditionalIncludeDirectories>
<OpenMPSupport>true</OpenMPSupport>
</ClCompile>
<Link>
Expand Down Expand Up @@ -187,6 +187,8 @@
<ClCompile Include="..\cpp\ToChar.cpp" />
<ClCompile Include="..\cpp\ToLower.cpp" />
<ClCompile Include="..\cpp\ToUpper.cpp" />
<ClCompile Include="..\fmt\src\format.cc" />
<ClCompile Include="..\fmt\src\os.cc" />
<ClCompile Include="dllMain.c" />
</ItemGroup>
<ItemGroup>
Expand Down
6 changes: 6 additions & 0 deletions modules/string/src/c/nlsString.vcxproj.filters
Expand Up @@ -87,6 +87,12 @@
<ClCompile Include="..\cpp\NumberToString.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\fmt\src\format.cc">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\fmt\src\os.cc">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\include\ToChar.hpp">
Expand Down

0 comments on commit 2aa2a1c

Please sign in to comment.