This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

c67xmathlib_2_01_00_00 missing exp, log10

Other Parts Discussed in Thread: MATHLIB

The libraries distributed here

http://software-dl.ti.com/dsps/dsps_public_sw/c6000/web/c67_fastmath/latest/index_FDS.html

in c67xmathlib_2_01_00_00/lib

do not include entry points for _exp and _log10.

The included documentation c67xfastRTS_user_guide.pdf states that exp and log10 are included.  Previous versions of the library included them.

  • This question may find more knowledgeable people in the BIOS Forum instead of the C67x Single Core Forum. A Moderator will move it there for you.

    Regards,
    RandyP

  • Examining the distributed c67xfastMath.lib shows no global entry point for _log10 or

    servo-lnx:/tmp/c67xmathlib_2_01_00_00/lib% nm6x -g -f -l c67xfastMath.lib

    ARCHIVE:  c67xfastMath.lib

    file            [index]  value      sclass   section name        symbol name

    atan2dp.obj    |[14]    |0x00000000|C_EXT   |.data              |Vatn2dp
    atan2dp.obj    |[11]    |0x00000204|C_EXT   |.text              |_atan2
    atan2dp.obj    |[13]    |0x00000204|C_EXT   |.text              |_atan2dp
    atan2dp.obj    |[12]    |0x00000000|C_EXT   |.text              |_atandp
    atan2dp.obj    |[15]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_divdp
    atan2dp.obj    |[17]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_errno
    atan2dp.obj    |[16]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_recipdp
    atan2dp_v.obj  |[17]    |0x00000000|C_EXT   |.text              |_atan2dp_v
    atan2sp.obj    |[11]    |0x00000000|C_EXT   |.text              |_atan2f
    atan2sp.obj    |[12]    |0x00000000|C_EXT   |.text              |_atan2sp
    atan2sp.obj    |[13]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_errno
    atan2sp_v.obj  |[13]    |0x00000000|C_EXT   |.text              |_atan2sp_v
    atandp.obj     |[15]    |0x00000000|C_EXT   |.data              |Vatndp
    atandp.obj     |[13]    |0x00000000|C_EXT   |.text              |_atan
    atandp.obj     |[14]    |0x00000000|C_EXT   |.text              |_atandp
    atandp.obj     |[16]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_divdp
    atandp.obj     |[17]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_recipdp
    atandp_v.obj   |[17]    |0x00000000|C_EXT   |.text              |_atandp_v
    atansp.obj     |[13]    |0x00000048|C_EXT   |text               |_atanf
    atansp.obj     |[14]    |0x00000048|C_EXT   |text               |_atansp
    atansp_v.obj   |[13]    |0x00000000|C_EXT   |.text              |_atansp_v
    cosdp.obj      |[14]    |0x00000000|C_EXT   |.data              |_HPisDP
    cosdp.obj      |[13]    |0x00000000|C_EXT   |.text              |_cos
    cosdp.obj      |[15]    |0x00000000|C_EXT   |.text              |_cosdp
    cosdp_v.obj    |[13]    |0x00000000|C_EXT   |.text              |_cosdp_v
    cossp.obj      |[12]    |0x00000000|C_EXT   |.text              |_cosf
    cossp.obj      |[11]    |0x00000000|C_EXT   |.text              |_cossp
    cossp_v.obj    |[13]    |0x00000000|C_EXT   |.text              |_cossp_v
    divdp.obj      |[12]    |0x00000000|C_EXT   |.text              |__divd
    divdp.obj      |[11]    |0x00000000|C_EXT   |.text              |_divdp
    divdp_v.obj    |[13]    |0x00000000|C_EXT   |.text              |_divdp_v
    divsp.obj      |[11]    |0x00000000|C_EXT   |.text              |__divf
    divsp.obj      |[12]    |0x00000000|C_EXT   |.text              |_divsp
    divsp_v.obj    |[13]    |0x00000000|C_EXT   |.text              |_divsp_v
    exp10dp.obj    |[14]    |0x00000028|C_EXT   |.data              |OneEtwo
    exp10dp.obj    |[16]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_divdp
    exp10dp.obj    |[17]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_errno
    exp10dp.obj    |[13]    |0x00000000|C_EXT   |.text              |_exp10
    exp10dp.obj    |[15]    |0x00000000|C_EXT   |.text              |_exp10dp
    exp10dp_v.obj  |[13]    |0x00000000|C_EXT   |.text              |_exp10dp_v
    exp10sp.obj    |[15]    |0x00000038|C_EXT   |.data              |Expon_Ctable
    exp10sp.obj    |[16]    |0x00000000|C_EXT   |.data              |Expon_Ktable
    exp10sp.obj    |[17]    |0x00000090|C_EXT   |.data              |_exp10f
    exp10sp.obj    |[13]    |0x00000090|C_EXT   |.data              |_exp10sp
    exp10sp.obj    |[14]    |0x00000060|C_EXT   |.data              |_expon2sp_asm
    exp10sp_v.obj  |[13]    |0x00000000|C_EXT   |.text              |_exp10sp_v
    exp2dp.obj     |[13]    |0x00000028|C_EXT   |.data              |OneExp2
    exp2dp.obj     |[16]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_divdp
    exp2dp.obj     |[17]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_errno
    exp2dp.obj     |[15]    |0x00000188|C_EXT   |.text              |_exp2
    exp2dp.obj     |[14]    |0x00000188|C_EXT   |.text              |_exp2dp
    exp2dp_v.obj   |[13]    |0x00000000|C_EXT   |.text              |_exp2dp_v
    exp2sp.obj     |[17]    |0x00000000|C_EXT   |text               |_exp2f
    exp2sp.obj     |[18]    |0x00000000|C_EXT   |text               |_exp2sp
    exp2sp.obj     |[19]    |0x00000000|C_EXT   |text               |_exp2sp_asm
    exp2sp.obj     |[15]    |0x00000000|C_EXT   |.data              |expon_ctable
    exp2sp.obj     |[16]    |0x00000000|C_EXT   |.text:hand         |expon_ktable
    exp2sp_v.obj   |[13]    |0x00000000|C_EXT   |.text              |_exp2sp_v
    expdp.obj      |[14]    |0x00000028|C_EXT   |.data              |OneE2
    expdp.obj      |[15]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_divdp
    expdp.obj      |[16]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_errno
    expdp.obj      |[13]    |0x00000000|C_EXT   |.text              |_expdp
    expdp_v.obj    |[13]    |0x00000000|C_EXT   |.text              |_expdp_v
    expsp.obj      |[18]    |0x00000060|C_EXT   |text               |_expf
    expsp.obj      |[15]    |0x00000060|C_EXT   |text               |_expsp
    expsp.obj      |[16]    |0x00000000|C_EXT   |.data              |exp_ctable
    expsp.obj      |[17]    |0x00000000|C_EXT   |.text:hand         |exp_ktable
    expsp_v.obj    |[17]    |0x00000000|C_EXT   |.text              |_expsp_v
    log10dp.obj    |[15]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_divdp
    log10dp.obj    |[16]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_errno
    log10dp.obj    |[13]    |0x00000000|C_EXT   |.text              |_log10dp
    log10dp.obj    |[14]    |0x00000000|C_EXT   |.data              |_nmn_L2
    log10dp_v.obj  |[13]    |0x00000000|C_EXT   |.text              |_log10dp_v
    log10sp.obj    |[14]    |0x00000000|C_EXT   |.text:hand         |Logtable_asm
    log10sp.obj    |[16]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_errno
    log10sp.obj    |[13]    |0x00000020|C_EXT   |.text              |_log10f
    log10sp.obj    |[15]    |0x00000020|C_EXT   |.text              |_log10sp
    log10sp_v.obj  |[17]    |0x00000000|C_EXT   |.text              |_log10sp_v
    log2dp.obj     |[16]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_divdp
    log2dp.obj     |[17]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_errno
    log2dp.obj     |[14]    |0x00000000|C_EXT   |.text              |_log2
    log2dp.obj     |[15]    |0x00000000|C_EXT   |.text              |_log2dp
    log2dp.obj     |[13]    |0x00000000|C_EXT   |.data              |_nmnL2
    log2dp_v.obj   |[13]    |0x00000000|C_EXT   |.text              |_log2dp_v
    log2sp.obj     |[16]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_errno
    log2sp.obj     |[13]    |0x00000000|C_EXT   |.text              |_log2f
    log2sp.obj     |[14]    |0x00000000|C_EXT   |.text              |_log2sp
    log2sp.obj     |[15]    |0x00000000|C_EXT   |.data              |log_table_asm
    log2sp_v.obj   |[17]    |0x00000000|C_EXT   |.text              |_log2sp_v
    logdp.obj      |[16]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_divdp
    logdp.obj      |[17]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_errno
    logdp.obj      |[14]    |0x00000000|C_EXT   |.text              |_log
    logdp.obj      |[15]    |0x00000000|C_EXT   |.text              |_logdp
    logdp.obj      |[13]    |0x00000000|C_EXT   |.data              |_numnL2
    logdp_v.obj    |[13]    |0x00000000|C_EXT   |.text              |_logdp_v
    logsp.obj      |[15]    |0x00000000|C_EXT   |.data              |Logtab_asm
    logsp.obj      |[16]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_errno
    logsp.obj      |[14]    |0x00000040|C_EXT   |.text              |_logf
    logsp.obj      |[13]    |0x00000040|C_EXT   |.text              |_logsp
    logsp_v.obj    |[17]    |0x00000000|C_EXT   |.text              |_logsp_v
    powdp.obj      |[13]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_expdp
    powdp.obj      |[14]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_logdp
    powdp.obj      |[12]    |0x00000020|C_EXT   |.text              |_pow
    powdp.obj      |[11]    |0x00000020|C_EXT   |.text              |_powdp
    powdp_v.obj    |[13]    |0x00000000|C_EXT   |.text              |_powdp_v
    powsp.obj      |[14]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_expsp
    powsp.obj      |[13]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_logsp
    powsp.obj      |[11]    |0x00000000|C_EXT   |.text              |_powf
    powsp.obj      |[12]    |0x00000000|C_EXT   |.text              |_powsp
    powsp_v.obj    |[17]    |0x00000000|C_EXT   |.text              |_powsp_v
    recipdp.obj    |[12]    |0x00000000|C_EXT   |.text              |_recip
    recipdp.obj    |[11]    |0x00000000|C_EXT   |.text              |_recipdp
    recipdp_v.obj  |[13]    |0x00000000|C_EXT   |.text              |_recipdp_v
    recipsp.obj    |[11]    |0x00000000|C_EXT   |.text              |_recipf
    recipsp.obj    |[12]    |0x00000000|C_EXT   |.text              |_recipsp
    recipsp_v.obj  |[13]    |0x00000000|C_EXT   |.text              |_recipsp_v
    rsqrtdp.obj    |[12]    |0x00000000|C_EXT   |.text              |_rsqrt
    rsqrtdp.obj    |[11]    |0x00000000|C_EXT   |.text              |_rsqrtdp
    rsqrtdp_v.obj  |[13]    |0x00000000|C_EXT   |.text              |_rsqrtdp_v
    rsqrtsp.obj    |[11]    |0x00000000|C_EXT   |.text              |_rsqrtf
    rsqrtsp.obj    |[12]    |0x00000000|C_EXT   |.text              |_rsqrtsp
    rsqrtsp_v.obj  |[13]    |0x00000000|C_EXT   |.text              |_rsqrtsp_v
    sindp.obj      |[15]    |0x00000000|C_EXT   |.data              |_HPisdp
    sindp.obj      |[13]    |0x0000001c|C_EXT   |.text              |_sin
    sindp.obj      |[14]    |0x0000001c|C_EXT   |.text              |_sindp
    sindp_v.obj    |[13]    |0x00000000|C_EXT   |.text              |_sindp_v
    sinsp.obj      |[11]    |0x00000014|C_EXT   |.text              |_sinf
    sinsp.obj      |[12]    |0x00000014|C_EXT   |.text              |_sinsp
    sinsp_v.obj    |[13]    |0x00000000|C_EXT   |.text              |_sinsp_v
    sqrtdp.obj     |[13]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_errno
    sqrtdp.obj     |[12]    |0x00000000|C_EXT   |.text              |_sqrt
    sqrtdp.obj     |[11]    |0x00000000|C_EXT   |.text              |_sqrtdp
    sqrtdp_v.obj   |[13]    |0x00000000|C_EXT   |.text              |_sqrtdp_v
    sqrtsp.obj     |[13]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_errno
    sqrtsp.obj     |[11]    |0x00000000|C_EXT   |.text              |_sqrtf
    sqrtsp.obj     |[12]    |0x00000000|C_EXT   |.text              |_sqrtsp
    sqrtsp_v.obj   |[13]    |0x00000000|C_EXT   |.text              |_sqrtsp_v
    servo-lnx:/tmp/c67xmathlib_2_01_00_00/lib%

    servo-lnx:/tmp/c67xmathlib_2_01_00_00/lib% cat c67xfastMath.lib.names | grep _log10
    log10dp.obj    |[13]    |0x00000000|C_EXT   |.text              |_log10dp
    log10dp_v.obj  |[13]    |0x00000000|C_EXT   |.text              |_log10dp_v
    log10sp.obj    |[13]    |0x00000020|C_EXT   |.text              |_log10f
    log10sp.obj    |[15]    |0x00000020|C_EXT   |.text              |_log10sp
    log10sp_v.obj  |[17]    |0x00000000|C_EXT   |.text              |_log10sp_v
    servo-lnx:/tmp/c67xmathlib_2_01_00_00/lib% cat c67xfastMath.lib.names | grep _exp
    exp10dp.obj    |[13]    |0x00000000|C_EXT   |.text              |_exp10
    exp10dp.obj    |[15]    |0x00000000|C_EXT   |.text              |_exp10dp
    exp10dp_v.obj  |[13]    |0x00000000|C_EXT   |.text              |_exp10dp_v
    exp10sp.obj    |[17]    |0x00000090|C_EXT   |.data              |_exp10f
    exp10sp.obj    |[13]    |0x00000090|C_EXT   |.data              |_exp10sp
    exp10sp.obj    |[14]    |0x00000060|C_EXT   |.data              |_expon2sp_asm
    exp10sp_v.obj  |[13]    |0x00000000|C_EXT   |.text              |_exp10sp_v
    exp2dp.obj     |[15]    |0x00000188|C_EXT   |.text              |_exp2
    exp2dp.obj     |[14]    |0x00000188|C_EXT   |.text              |_exp2dp
    exp2dp_v.obj   |[13]    |0x00000000|C_EXT   |.text              |_exp2dp_v
    exp2sp.obj     |[17]    |0x00000000|C_EXT   |text               |_exp2f
    exp2sp.obj     |[18]    |0x00000000|C_EXT   |text               |_exp2sp
    exp2sp.obj     |[19]    |0x00000000|C_EXT   |text               |_exp2sp_asm
    exp2sp_v.obj   |[13]    |0x00000000|C_EXT   |.text              |_exp2sp_v
    expdp.obj      |[13]    |0x00000000|C_EXT   |.text              |_expdp
    expdp_v.obj    |[13]    |0x00000000|C_EXT   |.text              |_expdp_v
    expsp.obj      |[18]    |0x00000060|C_EXT   |text               |_expf
    expsp.obj      |[15]    |0x00000060|C_EXT   |text               |_expsp
    expsp_v.obj    |[17]    |0x00000000|C_EXT   |.text              |_expsp_v
    powdp.obj      |[13]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_expdp
    powsp.obj      |[14]    |0x00000000|C_EXT   |UNDEFINED EXTERNAL |_expsp





  • I have filed a bug for this so this issue should be filed in the next release. In the meantime, you can fix this issue by uncommenting the statement on line 111 of log10dp.asm that is found under the path c67xmathlib_2_01_00_00\src\dp\log10dp

    Uncomment this statement:

    ;_log10:                                 ; rts lib DP FP log (base 10)

    For creating the global symbol _exp, do the same on line number 108 of expdp.asm file found under the path c67xmathlib_2_01_00_00\src\dp\exp10dp\

    ;_exp:                   ; rts entry

    After you change this file recompile the library by rebuilding the project under c67xmathlib_2_01_00_00\build. Linking the resulting binary should resolve the issue.

    Regards,

    Rahul

     

  • Thanks Rahul.

    I believe you meant to change expdp.asm in 67xmathlib_2_01_00_00\src\dp\expdp, not in c67xmathlib_2_01_00_00\src\dp\exp10dp.

    In addition to this issue, the linux Makefile needs numerous corrections.  I create a service request, Service Request# 1-770270390, to report this issue on 4/12/2012.  Unfortunately I have had no response.  I attached the patch file I sent in with the SR to fix c67xmathlib_2_01_00_00/build/Makefile.  Can you please file a bug for the Makefile problem as well?

    With the source changes you suggested, and the Makefile patch, I am able to regenerate the library picking up the missing entry points (and not losing any others).

    Can you also let me know tracking numbers for the bugs?

    Thanks

    Steve

  • Steve,

    Yes I meant the expdp.asm.

    This library was recently updated with some major structural changes and additional platform support. A new 3.x version library  which has support for C66x DSP platforms is now available on ti.com. Functionally the library is the same but the directory structure has been aligned with other DSP software like SYS/BIOS and XDC and is easier to integrate with CCS. This library can be found on ti.com under the name MATHLIB. The update also has major bug fixes and better documentation. You can find the latest release here:

    http://www.ti.com/tool/mathlib

    I noticed that the latest release also had this bug so I have filed the missing symbol bug against that release but I am not sure the makefile bug applies to the 3.x release anymore.

    Regards,

    Rahul

  • Rahul,

    I see c66x and c674x libs at the link you provided, but i need c67x libraries.

    Steve

  • Steve,

    The next release of the library will cover those family of devices. My post was just a "fyi" to inform you of the coming update and to explain the situation on the makefiles.

    Regards,

    Rahul

  • When will the new release be available?  It has been 6 months.  thanks

  • Steve,

    In contact with Rahul to get update on MATHLIB release and status of bug fixes.  Either he or I will update you in the next 1-2 days.

    FYI, this thread had been marked ANSWERED, so was not being actively monitored any longer by TI.  In the future, either reject the ANSWER (button on ANSWERED post), if answer if not complete or satisfactory.  Alternatively start a new post with reference to this thread to get into actively monitored queue.

    Regards.

  • Steve,

    The C67x version of MATHLIB has been delayed due to some high priority activities that have come up for the team managing the release process.  I'm trying to get a schedule update for you.

    In the mean time for a short term solution if you want to take advantage of the new MATHLIB release you can start with the new C674x MATHLIB source and recompile for the C67x device.  In the C674x MATHLIB release, there is a project to rebuild the library, You can change the target to C67x, rebuild the library source and generate the C67x version of the library. 

    Another approach would be to pick the source code for the functions that are required in your project and integrate them into your code base.

    Let me know if either of these approaches will work for you.

    Regards.

  • I have been unable to build the c674x version for the c67x target due to tool and platform difficulties.  I remain interested in a c67x release.

    Thanks

  • Steve,

    I am investigating when the next MATHLIB release will be available for the C67xx family.  I will give you an update within the next 1-2 days.

    I am also investigating the build failure you reported.  When I tried to import the project into CCSv5 the process failed at that step.  Is that what you saw when you tried the newer version of CCS?  My goal is to get the retarget and build process worked out so you can use the newer library source for your C67xx application until the new library is released.  I will have update when I report on the schedule.

    Regards.

  • Steve,

    There will not be a separate C67xx MATHLIB release for v3.x and beyond.  The plan is to provide a C67xx build option with the C674x MATHLIB package.  The C67x is a superset of the C67xx CPU.  A patch release for the C674x MATLIB to migrate the build process to CCSv5.2.  The project files are different between the original release platform CCS4 and the newer CCSv5.2.  That is the reason the build didn't work when you tried it on CCSv5.  In addition, the issues that you have reported will also be taken care.  If you want to test the build process you can download CCSv4 you can download it from this site: http://processors.wiki.ti.com/index.php/Download_CCS.  It won't be possible to have a release for CCSv3.3, however it should be possible to build the library using an external make file.

    I don't have schedule yet because I need to clarify a couple of issues with you first. 

    You want to include _exp and _log10 symbols in the MATHLIB library which are RTS library names. In current Mathlib, the assembly kernel uses _log10dp as entry point instead of _log10 and instead of _exp MATHLIB functions expsp or expdp. There is a build option to compile with RTS names. Do you need both MATHLIB and RTS names in the library, or just to override RTS names? There is an option (RTS override) to generate RTS names.

    In the case of _exp, it has 2 matches in the current MATHLIB release (expsp and expdp).  We can only provide one symbol in a library, so I need to know which of the 2 MATHLIB functions you want to use.  I am thinking it will be expdp, so that it matches the _log10 MATHLIB function, log10dp.  Can you confirm?

    For more flexibility our plan is to generate ccs 5.2 projects and provide hooks for customers to rebuild either sp RTS override or dp RTS override for C67x. For the supported targets, we will provide 3 libraries, the normal one, sp RTS override and dp RTS override.

    Regards,

     

  • Tommy,

    I don't believe there is a linux CCSv4 build available.  In the v2.x library there was a makefile that could be used with the code gen tools and without CCS.  Unfortunately it had numerous issues that made it unusable.  The support for CGT only mathlib builds seems to have been totally dropped from the v3.x library instead of being fixed.  Normally we don't use CCS at all.

    I am using a v1.x mathlib library currently.  At that time override RTS wasn't a build option, I think it was just the way it worked, i.e. it was always overridden. 

    I would like all the functions related to mathlib that are supported in C99 to be supported simultaneously for both doubles and floats.  For example, I want to be able to use exp(), expf(), exp2(), exp2f(), log(), logf(), log10(), log10f(), log2, log2f(), etc.  This also applies to the trig functions, pow, sqrt, etc.  I need both of the nonstandard entry points _div and _divf.  These are two non-standard routines that the compiler will generate references to.  There are other nonstandard routines (that didn't get added in C99) I would like you to continue support for, e.g. exp10(), exp10f().  I can mail you an exhaustive list of the entry points in v1.x.

    I don't understand your plan to have two RTS overide libraries, one for sp and one for dp.  Why can't they coexist as they used to?  For example, in v3.0.1.1 expsp.asm doesn't have a label of _exp at all, for OVERRIDE_RTS it has _expf.  expdp.asm defined _exp for OVERRIDE_RTS.  I question the accuracy of your statement "In the case of _exp, it has 2 matches in the current MATHLIB release (expsp and expdp)."

    It does appear to me that an all inclusive library will be bigger than it was in v1.x because you have duplicated code in places, e.g. in expdp.asm, exp2dp.asm, exp10dp.asm.  The v1.x code did not have this duplication.  The duplication is acceptable, but it does seem like a step backwards.

    I am concerned about your plan, it doesn't seem like it has what I want or what was provided in v1.x.  At the same time I don't understand what library "the normal one" is and how it differs the traditional v1.x library.

    Best Regards,

    Steve

  • Hi Steve,

    I am responsible for making this Mathlib release. In mathlib, every function has a sp and a dp version, for example, expsp and expdp. Because in the unit test code, both dp and sp versions are using double precision RTS function, e.g. exp, as reference, I thought that's the only function in RTS. You are correct that there are both exp and expf in RTS. So the information I gave Tom about needing separate dp and sp libraries is not correct. They can be included in a single library.

    In current Mathlib release, we do not provide RTS function names. We only use xxxsp or xxxdp, because RTS functions are linked in unit tests as reference. When we build the library, we also build unit tests, then use the unit tests to verify the library and generate test report and benchmark information. Override RTS has not been a priority for us, because for newer chip sets, such as C66, the C with intrinsic implementation are becoming the main kernel with better performance than asm code. Recently, we are getting requests to add RTS override capability. So this patch release will address this issue.

    Our current plan is to make a separate RTS override library, which will use RTS names such as exp, expf instead of expsp and expdp. We will test the normal version (expsp and expdp), but not the override version. Since the source codes are the same, only symbols are different, I think that should be acceptable. We didn't plan to make a single library that would include both normal names (expsp, expdp) and override names (exp, expf). Please let me know if this would be acceptable to you.

    We actually do not use CCS to make builds. We use makefile and xdc tools. If you would like to build mathlib this way ,we can provide the details about what you need to install and how to make builds.

    We also have plans to add other routines into Mathlib in the future. We would like your inputs to see which functions are more important to you.

    best regards,

    Yimin

  • Yimin,

    I would be very interested in the makefile/xdc tool method to build mathlib.

    I don't understand your test plan:

    "Our current plan is to make a separate RTS override library, which will use RTS names such as exp, expf instead of expsp and expdp. We will test the normal version (expsp and expdp), but not the override version. "

    "We didn't plan to make a single library that would include both normal names (expsp, expdp) and override names (exp, expf). "

    How can you test the normal version (expsp and expdp) if the normal names (expsp, expdp) aren't included?

    I would add a test requirement that you verify all the expected untested names actually exist.  You could also verify that the entry points match the expected normal name entry points.  All this could be done with nm6x.  v2.x was plagued by missing entry points.

    What future routines are you considering?  I would be curious to see the performance difference between 1.0f/someFloatVar vs. recipf(float).  Perhaps this is in the test report and benchmark information you mentioned and I just don't know where to look.

    The code entry points for v1x are shown below.  We don't currently use any of the *dp or *sp entry points, although I don't see why the couldn't be included in the override library as they were before.  I think it would actually be easier for you to include them.  For example in v3.0.1.1 expdp.asm _expdp is always defined, it is not conditional.

    nm6x -g fastrts67x.lib | grep T | sed -e 's/.* T //'
    _atan
    _atan2
    _atan2dp
    _atandp
    _atan2f
    _atan2sp
    _atanf
    _atansp
    __divd
    _divdp
    __divf
    _divsp
    _exp
    _exp10
    _exp10dp
    _exp2
    _exp2dp
    _expdp
    _exp10f
    _exp10sp
    _exp2f
    _exp2sp
    _expf
    _expsp
    _log
    _log10
    _log10dp
    _log2
    _log2dp
    _logdp
    _log10f
    _log10sp
    _log2f
    _log2sp
    _logf
    _logsp
    _pow
    _powdp
    _powf
    _powsp
    _recip
    _recipdp
    _recipf
    _recipsp
    _rsqrt
    _rsqrtdp
    _rsqrtf
    _rsqrtsp
    _cos
    _cosdp
    _sin
    _sindp
    _cosf
    _cossp
    _sinf
    _sinsp
    _sqrtf
    _sqrtsp
    _sqrt
    _sqrtdp

    Thanks,

    Steve

  • Hi Steve,

    It looks like the patch release will happen in mid January time frame. The new release will have the updated build process documented.

    The normal library will always be there. We will verify the results with the normal names/entry points. We can certainly verify the entry points in the override library. We may combine the two libraries if it is doable for us. You can find the test reports on Mathlib download page below, click "cancel" in the pop-up window.

    http://software-dl.ti.com/sdoemb/sdoemb_public_sw/mathlib/latest/index_FDS.html

    regards,

    Yimin

  • The new library doesn't appear to be available at the link http://software-dl.ti.com/sdoemb/sdoemb_public_sw/mathlib/latest/index_FDS.html

    That still has 3.0.1.1.   How can I get the updated library?

  • Hi,

    Sorry for the delay. There has been some interruption to the release work. We are finishing up the release. You should see it on line within two weeks.

    regards,

    Yimin

  • Is there any update on this?  It has been three weeks since the last post, which said the new version would be available within two weeks.

  • Sorry for the delay. It should be available for download today.

    Yimin

  • To anyone who happens to stumble upon this old post:

    Today, I independently found this bug in C67X-MATHLIB 2.1.0.0 (the latest version available for download from http://www.ti.com/tool/mathlib). Please be aware that this bug still exists in the latest released version of C67X-MATHLIB and you will need to modify the source code to work around it.