Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Image to histogram multi thread #101

Conversation

hjmjohnson
Copy link
Member

http://review.source.kitware.com/#/c/23886/3

Bradley Lowekamp
Uploaded patch set 1.11:41 AM

Bradley Lowekamp
Patch Set 1: I am seeing more that a 10x speed up with 40+ threads.12:16 PM

Dzenan Zukic
12:26 PM

Patch Set 1: Code-Review+2
(1 comment)
I guess this change reduces merge's computational complexity from n to log2(n). With many-core processors, that is significant. But I wouldn't have guessed that total time was dominated by the merge operation. And only that can explain a tenfold speedup.
Modules/Numerics/Statistics/include/itkImageToHistogramFilter.hxx
Line 279:
owner ship -> ownership

Kitware Build Robot
Patch Set 1: Verified-1 Build Failed: CDash filtered results: https://open.cdash.org/index.php?&project=Insight&filtercount=3&field1=buildname/string&compare1=63&value1=23886-1&field2=buildstarttime/date&compare2=83&value2=2015-03-01&field3=buildstarttime/date&compare3=84&value3=2029-01-0112:28 PM

Bradley Lowekamp
Patch Set 1: That observation was for the last execution in the ImageToHistogramImageFilterTest0 where the histogram is for an RGB histogram of size 127x127x127, where the image is the same size. Yes you are correct of the expect threaded performance of the reduction is O(lg(n)) when fully concurrent. However, depending of thread execution, it could be linear with n-1 merges, or like a binary tree with 2n-2 merges.12:40 PM

Bradley Lowekamp
Uploaded patch set 2.12:49 PM

Bradley Lowekamp
Patch Set 2: It looks like the CI needs to be cleaned up from leftover VXL improvements...1:06 PM

Dzenan Zukic
1:06 PM

Patch Set 2: Code-Review+2
(2 comments)
Modules/Numerics/Statistics/include/itkImageToHistogramFilter.hxx
Line 286:
ownership is one word, I think
Modules/Numerics/Statistics/include/itkMaskedImageToHistogramFilter.hxx
Line 114:
Nice reuse!

Dzenan Zukic
Patch Set 2: Also, Matt is in the middle of switching to GitHub. Please don't merge this yet.1:08 PM

Bradley Lowekamp
Uploaded patch set 3.1:16 PM

Bradley Lowekamp
1:16 PM

Patch Set 2:
(1 comment)
thanks!
Modules/Numerics/Statistics/include/itkImageToHistogramFilter.hxx
Line 286:
Done

Dzenan Zukic
Patch Set 3: Code-Review+21:45 PM

Kitware Build Robot
Patch Set 2: Verified-1 Build Failed: CDash filtered results: https://open.cdash.org/index.php?&project=Insight&filtercount=3&field1=buildname/string&compare1=63&value1=23886-2&field2=buildstarttime/date&compare2=83&value2=2015-03-01&field3=buildstarttime/date&compare3=84&value3=2029-01-012:12 PM

Kitware Build Robot
Patch Set 3: Verified-1 Build Failed: CDash filtered results: https://open.cdash.org/index.php?&project=Insight&filtercount=3&field1=buildname/string&compare1=63&value1=23886-3&field2=buildstarttime/date&compare2=83&value2=2015-03-01&field3=buildstarttime/date&compare3=84&value3=2029-01-012:54 PM

Change-Id: I979069f0ae1fdde9175a1f86853378db4c86ca5b
This reduces the expected complexity of merging histograms form O(n)
to O(lg(n)), where n is the number of work units the image is split
into.

Change-Id: Iee81714bfa14615fa50439b4f32e403191f62392
@hjmjohnson
Copy link
Member Author

@blowekamp A failing test on linux that seems related to this patch:

2018-11-05T23:35:01.8303956Z The following tests FAILED:
2018-11-05T23:35:01.8304400Z 1719 - itkStatisticsUniqueLabelMapFilterTest1 (Failed)

@dzenanz
Copy link
Member

dzenanz commented Nov 6, 2018

@hjmjohnson I think that itkStatisticsUniqueLabelMapFilterTest1 has been sporadically failing for months now. Non-deterministic test failures are time-consuming to diagnose. And while the problem is related, it should not stop this patch.

@blowekamp
Copy link
Member

That test has been failing speratically for MANY years. I think the threading refactoring may have increased the frequency.

I have a patch on my workstation I should amend to restore the intended std::move operation.

@hjmjohnson hjmjohnson closed this Nov 6, 2018
@hjmjohnson hjmjohnson deleted the ImageToHistogramMultiThread branch November 6, 2018 14:49
@hjmjohnson
Copy link
Member Author

@blowekamp Thanks for looking into this. I did not mean to close this issue. Only to comment on it.

@hjmjohnson hjmjohnson restored the ImageToHistogramMultiThread branch November 6, 2018 16:31
@hjmjohnson
Copy link
Member Author

Reopen issue. My bad. Sorry.

@hjmjohnson hjmjohnson reopened this Nov 6, 2018
@hjmjohnson hjmjohnson added type:Bug Inconsistencies or issues which will cause an incorrect result under some or all circumstances status:Confirmed Confirmed/reproduced issue on a different machine with same or similar settings to those reported type:Testing Ensure that the purpose of a class is met/the results on a wide set of test cases are correct labels Nov 6, 2018
@hjmjohnson hjmjohnson merged commit 09943be into InsightSoftwareConsortium:master Nov 6, 2018
@blowekamp
Copy link
Member

@dzenanz @thewtex There are a couple of time failures on the dashboard related to this change. They appear to be when TBB is used:
https://open.cdash.org/testDetails.php?test=704357857&build=5617530&graph=time

Here is the interesting information:
Number of Work Units: 64
Number of Threads: 4
Global Maximum Number Of Threads: 128
Global Default Number Of Threads: 4
Global Default Threader Type: TBBMultiThreader
SingleMethod: 0
SingleData: 0

perhaps the increase in time is just due to the number of WorkUnits?

@thewtex
Copy link
Member

thewtex commented Nov 7, 2018

Based on other experiences, we may want to decrease the number of default work units with TBB.

@dzenanz
Copy link
Member

dzenanz commented Nov 7, 2018

Or implement the workUnitToThreadRatio parameter which could be set per filter. And have the ratio low by default (e.g. 3-4), and high (e.g. 10-30) for filters with uneven per-pixel workload.

@blowekamp
Copy link
Member

This particular case the image is 127x127 RGB and the histogram is 127^3. This is a particularly bad case where there is more work required for every split done. This ImageToHistogram filter is an interesting case where the cost of image computation (#pixel ), the cost of the histogram (#bins) and the expected cost of merging (#bints*log(#workunits)) can beestimated. The cost of doing a split is not just the data processed, it has the other cost that may need to be considered. Perhaps just setting the work unit ratio for this ( or similar types ) to one is appropriate.

@dzenanz
Copy link
Member

dzenanz commented Nov 7, 2018

Of course, the ratio could be lowered for cases where splitting incurs a high overhead.

@hjmjohnson hjmjohnson deleted the ImageToHistogramMultiThread branch October 23, 2019 13:29
hjmjohnson added a commit to hjmjohnson/ITK that referenced this pull request Dec 26, 2020
Fix typos in comments
CMakeLists.txt: Export all symbols (InsightSoftwareConsortium#136)
test/cctest/CMakeLists.txt: Added /bigobj for MSVC tests (InsightSoftwareConsortium#135)
Add DOUBLE_CONVERSION_HAS_ATTRIBUTE to fix warnings on MSVC and enable for GCC. (InsightSoftwareConsortium#131)
Fix broken MSVC builds. (InsightSoftwareConsortium#130)
Add support for quiet and signaling NaNs to the ieee header. (InsightSoftwareConsortium#128)
Move buffer and buffer_pos down (InsightSoftwareConsortium#125)
    * Move buffer and buffer_pos down
    Simplifies code by removing two asserts
    Optimize code with -ftrivial-auto-var-init=pattern by avoiding initialization when buffer is not used
    * Disable -ftrivial-auto-var-init=pattern for a large buffer

Fix strtod.cc undefined constants (InsightSoftwareConsortium#123)
    When DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS is not defined
    there is a build error when -Wall -Werror enabled because
    kMaxExactDoubleIntegerDecimalDigits, exact_powers_of_ten and
    kExactPowersOfTenSize are used only in else branch of this define
    (when it's defined).
    Fixes google/double-conversion#122

Add full license to test .cc files missing it. (InsightSoftwareConsortium#121)
    Some files in cctest had a 1-line copyright that doesn't list the
    license. This copies the project license to those files, preserving the
    date.

Add wasm32 as supported platform (InsightSoftwareConsortium#120)
    Summary:
    Emscripten is already included, adding wasm32 the same way for when
    build with "plain" clang wasm32 (without emscripten)

Pseiderer/add nios2 and xtensa 001 (InsightSoftwareConsortium#119)
    * double-conversion: enable for nios2
    Nios2 supports double conversion, tested using qemu:

Add support for microblaze.
Add support for e2k architecture. (InsightSoftwareConsortium#118)
Add min exponent width option in double-to-string conversion (InsightSoftwareConsortium#116)

Remove reference to `diy-fp.cc`
    That file was removed in a previous commit.

More Bignum fiddling. (InsightSoftwareConsortium#108)
    * Char has size 1.
    * More const.
    * Allow inlining.
    * Compact Bignum sizes.
    * Consistent naming.

Remove redundant parenthesis.
    Reported by seanm (github).

Optimise Bignum layout. (InsightSoftwareConsortium#107)
    * Use memset to clear bignum.
    * Improve data locality.
    * Reduce size of bignum.

Split Strtod() (InsightSoftwareConsortium#106)
    Add `StrtodTrimmed` method, exposing a later stage of the conversion pipeline.
    Some tools can do the first stage outside of the double-conversion library and would prefer not to pay the cost of doing it again.

Split double-conversion. (InsightSoftwareConsortium#104)
    Separates the two main classes into separate c and h files.
    Fix naming. (InsightSoftwareConsortium#103)
    Fix naming of `case_insensibility` to `case_insensitivity`.

Consistent macro prefix. (InsightSoftwareConsortium#101)

Use standard min/max. (InsightSoftwareConsortium#102)

Fix some issues with invalid hex-float literals.
    When converting `0x` the converter would assert (or access out of
        boundary).
    With `0x1.p1234556666FFFFF` the converter would overflow and not yield
    the correct exponent.

Usefulcat master (InsightSoftwareConsortium#98)
    * minor bug fix: use free() instead of delete[] to free memory allocated by strdup()
    * fix for uninitialized variable problem found by valgrind
    * disable assertions for 'optimize' build
    * removed -g option that was inadvertently added to CCFLAGS
    * ignore generated files

    Fix warning for g++ 4.9.3.

CMake: install to correct lib dir (InsightSoftwareConsortium#93)
    64-bit libraries should be installed in /usr/lib64, not in /usr/lib/
    Make the destination lib dir configurable.

Add big endian ARM support (InsightSoftwareConsortium#92)
    This fixes compilation on such platforms.

Switch to relative includes.
Fix 16-bit separators.

msvc: check if _MSC_VER is defined (InsightSoftwareConsortium#88)

Allow for compilation in emscripten (InsightSoftwareConsortium#86)
    Support emscripten

Add test cases.
    Fixes InsightSoftwareConsortium#62

Add support of ARC architecture (InsightSoftwareConsortium#82)
    More info about ARC architecture is here: [1] & [2].
    We need ARC supported here for many things like:
     - ICU (see [3])
     - Qt5 etc

Fix hex literal bug.
    Large hex literals would lose their minus sign.

Support separator characters.
Add support for hexadecimal float literals.
Fix bug where hex numbers would lose the minus sign.

Add comments for achitecture check.
    This should make it easier to add new architectures.

Add support for aarch64_be, or1k and microblazebe.
Add support for Windows on ARM and ARM64 (InsightSoftwareConsortium#76)

Use `static_assert` with newer compilers.
Add Native Client as support architecture.
Avoid undefined cast to make ASAN happy.
Avoid undefined cast to make ASAN happy.
Add `exports_files`
Processed length should include no trailing junk (InsightSoftwareConsortium#63)

Clarify output charset in DoubleToAscii documentation (InsightSoftwareConsortium#61)
    * Clarify output charset in DoubleToAscii documentation
    * Fixing typo in charset docs.

Fix warning for code that will never be executed (InsightSoftwareConsortium#59)

Rename macros.
    Renamed DISALLOW_COPY_AND_ASSIGN and DISALLOW_IMPLICIT_CONSTRUCTORS to
    DC_DISALLOW_COPY_AND_ASSIGN and DC_DISALLOW_IMPLICIT_CONSTRUCTORS.

    This makes it easier to use this library in projects that have macros
    with the same name (as is common in Google).

Some refactorings: remove unused static, replace deprecated headers, init member in constructor
    REF: replace deprecated headers
    REF: meaningless static definition in anonymous namespace
    REF: init member in constructor

Fix typo in variable name.

Suppress issue in clang analyzer.
CMake fixes.
    Remove unused CMake file.

Implement ALLOW_CASE_INSENSIBILITY mode for StringToDoubleConverter c…

Remove unnecessary INSTALL_INTERFACE expression.

Use template for CMake installation.

Fix mistake for build interface include dir.

Improve CMake changes.
    Update CMake package generation.

Implement ALLOW_CASE_INSENSIBILITY mode for StringToDoubleConverter class

Add assert and test.

Avoid negative shift.
    When filling in fractional digits in a fixed representation we
    might use all existing digits. When this happens, we can not look
    at the next digit to see if we should round up.
    Before this fix, we tried to shift by a negative amount to see if the
    (non-existing) next bit was set to 1 (requiring the number to be rounded up).
hjmjohnson added a commit to hjmjohnson/ITK that referenced this pull request Dec 26, 2020
Fix typos in comments
CMakeLists.txt: Export all symbols (InsightSoftwareConsortium#136)
test/cctest/CMakeLists.txt: Added /bigobj for MSVC tests (InsightSoftwareConsortium#135)
Add DOUBLE_CONVERSION_HAS_ATTRIBUTE to fix warnings on MSVC and enable for GCC. (InsightSoftwareConsortium#131)
Fix broken MSVC builds. (InsightSoftwareConsortium#130)
Add support for quiet and signaling NaNs to the ieee header. (InsightSoftwareConsortium#128)
Move buffer and buffer_pos down (InsightSoftwareConsortium#125)
    * Move buffer and buffer_pos down
    Simplifies code by removing two asserts
    Optimize code with -ftrivial-auto-var-init=pattern by avoiding initialization when buffer is not used
    * Disable -ftrivial-auto-var-init=pattern for a large buffer

Fix strtod.cc undefined constants (InsightSoftwareConsortium#123)
    When DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS is not defined
    there is a build error when -Wall -Werror enabled because
    kMaxExactDoubleIntegerDecimalDigits, exact_powers_of_ten and
    kExactPowersOfTenSize are used only in else branch of this define
    (when it's defined).
    Fixes google/double-conversion#122

Add full license to test .cc files missing it. (InsightSoftwareConsortium#121)
    Some files in cctest had a 1-line copyright that doesn't list the
    license. This copies the project license to those files, preserving the
    date.

Add wasm32 as supported platform (InsightSoftwareConsortium#120)
    Summary:
    Emscripten is already included, adding wasm32 the same way for when
    build with "plain" clang wasm32 (without emscripten)

Pseiderer/add nios2 and xtensa 001 (InsightSoftwareConsortium#119)
    * double-conversion: enable for nios2
    Nios2 supports double conversion, tested using qemu:

Add support for microblaze.
Add support for e2k architecture. (InsightSoftwareConsortium#118)
Add min exponent width option in double-to-string conversion (InsightSoftwareConsortium#116)

Remove reference to `diy-fp.cc`
    That file was removed in a previous commit.

More Bignum fiddling. (InsightSoftwareConsortium#108)
    * Char has size 1.
    * More const.
    * Allow inlining.
    * Compact Bignum sizes.
    * Consistent naming.

Remove redundant parenthesis.
    Reported by seanm (github).

Optimise Bignum layout. (InsightSoftwareConsortium#107)
    * Use memset to clear bignum.
    * Improve data locality.
    * Reduce size of bignum.

Split Strtod() (InsightSoftwareConsortium#106)
    Add `StrtodTrimmed` method, exposing a later stage of the conversion pipeline.
    Some tools can do the first stage outside of the double-conversion library and would prefer not to pay the cost of doing it again.

Split double-conversion. (InsightSoftwareConsortium#104)
    Separates the two main classes into separate c and h files.
    Fix naming. (InsightSoftwareConsortium#103)
    Fix naming of `case_insensibility` to `case_insensitivity`.

Consistent macro prefix. (InsightSoftwareConsortium#101)

Use standard min/max. (InsightSoftwareConsortium#102)

Fix some issues with invalid hex-float literals.
    When converting `0x` the converter would assert (or access out of
        boundary).
    With `0x1.p1234556666FFFFF` the converter would overflow and not yield
    the correct exponent.

Usefulcat master (InsightSoftwareConsortium#98)
    * minor bug fix: use free() instead of delete[] to free memory allocated by strdup()
    * fix for uninitialized variable problem found by valgrind
    * disable assertions for 'optimize' build
    * removed -g option that was inadvertently added to CCFLAGS
    * ignore generated files

    Fix warning for g++ 4.9.3.

CMake: install to correct lib dir (InsightSoftwareConsortium#93)
    64-bit libraries should be installed in /usr/lib64, not in /usr/lib/
    Make the destination lib dir configurable.

Add big endian ARM support (InsightSoftwareConsortium#92)
    This fixes compilation on such platforms.

Switch to relative includes.
Fix 16-bit separators.

msvc: check if _MSC_VER is defined (InsightSoftwareConsortium#88)

Allow for compilation in emscripten (InsightSoftwareConsortium#86)
    Support emscripten

Add test cases.
    Fixes InsightSoftwareConsortium#62

Add support of ARC architecture (InsightSoftwareConsortium#82)
    More info about ARC architecture is here: [1] & [2].
    We need ARC supported here for many things like:
     - ICU (see [3])
     - Qt5 etc

Fix hex literal bug.
    Large hex literals would lose their minus sign.

Support separator characters.
Add support for hexadecimal float literals.
Fix bug where hex numbers would lose the minus sign.

Add comments for achitecture check.
    This should make it easier to add new architectures.

Add support for aarch64_be, or1k and microblazebe.
Add support for Windows on ARM and ARM64 (InsightSoftwareConsortium#76)

Use `static_assert` with newer compilers.
Add Native Client as support architecture.
Avoid undefined cast to make ASAN happy.
Avoid undefined cast to make ASAN happy.
Add `exports_files`
Processed length should include no trailing junk (InsightSoftwareConsortium#63)

Clarify output charset in DoubleToAscii documentation (InsightSoftwareConsortium#61)
    * Clarify output charset in DoubleToAscii documentation
    * Fixing typo in charset docs.

Fix warning for code that will never be executed (InsightSoftwareConsortium#59)

Rename macros.
    Renamed DISALLOW_COPY_AND_ASSIGN and DISALLOW_IMPLICIT_CONSTRUCTORS to
    DC_DISALLOW_COPY_AND_ASSIGN and DC_DISALLOW_IMPLICIT_CONSTRUCTORS.

    This makes it easier to use this library in projects that have macros
    with the same name (as is common in Google).

Some refactorings: remove unused static, replace deprecated headers, init member in constructor
    REF: replace deprecated headers
    REF: meaningless static definition in anonymous namespace
    REF: init member in constructor

Fix typo in variable name.

Suppress issue in clang analyzer.
CMake fixes.
    Remove unused CMake file.

Implement ALLOW_CASE_INSENSIBILITY mode for StringToDoubleConverter c…

Remove unnecessary INSTALL_INTERFACE expression.

Use template for CMake installation.

Fix mistake for build interface include dir.

Improve CMake changes.
    Update CMake package generation.

Implement ALLOW_CASE_INSENSIBILITY mode for StringToDoubleConverter class

Add assert and test.

Avoid negative shift.
    When filling in fractional digits in a fixed representation we
    might use all existing digits. When this happens, we can not look
    at the next digit to see if we should round up.
    Before this fix, we tried to shift by a negative amount to see if the
    (non-existing) next bit was set to 1 (requiring the number to be rounded up).
hjmjohnson added a commit that referenced this pull request Dec 28, 2020
Fix typos in comments
CMakeLists.txt: Export all symbols (#136)
test/cctest/CMakeLists.txt: Added /bigobj for MSVC tests (#135)
Add DOUBLE_CONVERSION_HAS_ATTRIBUTE to fix warnings on MSVC and enable for GCC. (#131)
Fix broken MSVC builds. (#130)
Add support for quiet and signaling NaNs to the ieee header. (#128)
Move buffer and buffer_pos down (#125)
    * Move buffer and buffer_pos down
    Simplifies code by removing two asserts
    Optimize code with -ftrivial-auto-var-init=pattern by avoiding initialization when buffer is not used
    * Disable -ftrivial-auto-var-init=pattern for a large buffer

Fix strtod.cc undefined constants (#123)
    When DOUBLE_CONVERSION_CORRECT_DOUBLE_OPERATIONS is not defined
    there is a build error when -Wall -Werror enabled because
    kMaxExactDoubleIntegerDecimalDigits, exact_powers_of_ten and
    kExactPowersOfTenSize are used only in else branch of this define
    (when it's defined).
    Fixes google/double-conversion#122

Add full license to test .cc files missing it. (#121)
    Some files in cctest had a 1-line copyright that doesn't list the
    license. This copies the project license to those files, preserving the
    date.

Add wasm32 as supported platform (#120)
    Summary:
    Emscripten is already included, adding wasm32 the same way for when
    build with "plain" clang wasm32 (without emscripten)

Pseiderer/add nios2 and xtensa 001 (#119)
    * double-conversion: enable for nios2
    Nios2 supports double conversion, tested using qemu:

Add support for microblaze.
Add support for e2k architecture. (#118)
Add min exponent width option in double-to-string conversion (#116)

Remove reference to `diy-fp.cc`
    That file was removed in a previous commit.

More Bignum fiddling. (#108)
    * Char has size 1.
    * More const.
    * Allow inlining.
    * Compact Bignum sizes.
    * Consistent naming.

Remove redundant parenthesis.
    Reported by seanm (github).

Optimise Bignum layout. (#107)
    * Use memset to clear bignum.
    * Improve data locality.
    * Reduce size of bignum.

Split Strtod() (#106)
    Add `StrtodTrimmed` method, exposing a later stage of the conversion pipeline.
    Some tools can do the first stage outside of the double-conversion library and would prefer not to pay the cost of doing it again.

Split double-conversion. (#104)
    Separates the two main classes into separate c and h files.
    Fix naming. (#103)
    Fix naming of `case_insensibility` to `case_insensitivity`.

Consistent macro prefix. (#101)

Use standard min/max. (#102)

Fix some issues with invalid hex-float literals.
    When converting `0x` the converter would assert (or access out of
        boundary).
    With `0x1.p1234556666FFFFF` the converter would overflow and not yield
    the correct exponent.

Usefulcat master (#98)
    * minor bug fix: use free() instead of delete[] to free memory allocated by strdup()
    * fix for uninitialized variable problem found by valgrind
    * disable assertions for 'optimize' build
    * removed -g option that was inadvertently added to CCFLAGS
    * ignore generated files

    Fix warning for g++ 4.9.3.

CMake: install to correct lib dir (#93)
    64-bit libraries should be installed in /usr/lib64, not in /usr/lib/
    Make the destination lib dir configurable.

Add big endian ARM support (#92)
    This fixes compilation on such platforms.

Switch to relative includes.
Fix 16-bit separators.

msvc: check if _MSC_VER is defined (#88)

Allow for compilation in emscripten (#86)
    Support emscripten

Add test cases.
    Fixes #62

Add support of ARC architecture (#82)
    More info about ARC architecture is here: [1] & [2].
    We need ARC supported here for many things like:
     - ICU (see [3])
     - Qt5 etc

Fix hex literal bug.
    Large hex literals would lose their minus sign.

Support separator characters.
Add support for hexadecimal float literals.
Fix bug where hex numbers would lose the minus sign.

Add comments for achitecture check.
    This should make it easier to add new architectures.

Add support for aarch64_be, or1k and microblazebe.
Add support for Windows on ARM and ARM64 (#76)

Use `static_assert` with newer compilers.
Add Native Client as support architecture.
Avoid undefined cast to make ASAN happy.
Avoid undefined cast to make ASAN happy.
Add `exports_files`
Processed length should include no trailing junk (#63)

Clarify output charset in DoubleToAscii documentation (#61)
    * Clarify output charset in DoubleToAscii documentation
    * Fixing typo in charset docs.

Fix warning for code that will never be executed (#59)

Rename macros.
    Renamed DISALLOW_COPY_AND_ASSIGN and DISALLOW_IMPLICIT_CONSTRUCTORS to
    DC_DISALLOW_COPY_AND_ASSIGN and DC_DISALLOW_IMPLICIT_CONSTRUCTORS.

    This makes it easier to use this library in projects that have macros
    with the same name (as is common in Google).

Some refactorings: remove unused static, replace deprecated headers, init member in constructor
    REF: replace deprecated headers
    REF: meaningless static definition in anonymous namespace
    REF: init member in constructor

Fix typo in variable name.

Suppress issue in clang analyzer.
CMake fixes.
    Remove unused CMake file.

Implement ALLOW_CASE_INSENSIBILITY mode for StringToDoubleConverter c…

Remove unnecessary INSTALL_INTERFACE expression.

Use template for CMake installation.

Fix mistake for build interface include dir.

Improve CMake changes.
    Update CMake package generation.

Implement ALLOW_CASE_INSENSIBILITY mode for StringToDoubleConverter class

Add assert and test.

Avoid negative shift.
    When filling in fractional digits in a fixed representation we
    might use all existing digits. When this happens, we can not look
    at the next digit to see if we should round up.
    Before this fix, we tried to shift by a negative amount to see if the
    (non-existing) next bit was set to 1 (requiring the number to be rounded up).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
status:Confirmed Confirmed/reproduced issue on a different machine with same or similar settings to those reported type:Bug Inconsistencies or issues which will cause an incorrect result under some or all circumstances type:Testing Ensure that the purpose of a class is met/the results on a wide set of test cases are correct
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants