Git Product home page Git Product logo

cminpack's Introduction

C/C++ Minpack Build Status Build Status Coverage Status Coverity Scan Build Status

This is a C version of the minpack minimization package. It has been derived from the fortran code using f2c and some limited manual editing. Note that you need to link against libf2c to use this version of minpack. Extern "C" linkage permits the package routines to be called from C++. Check ftp://netlib.bell-labs.com/netlib/f2c for the latest f2c version. For general minpack info and test programs, see the accompanying readme.txt and http://www.netlib.org/minpack/.

Type make to compile and make install to install in /usr/local or modify the makefile to suit your needs.

This software has been tested on a RedHat 7.3 Linux machine - usual 'use at your own risk' warnings apply.

Manolis Lourakis -- lourakis at ics forth gr, July 2002 Institute of Computer Science, Foundation for Research and Technology - Hellas Heraklion, Crete, Greece

Repackaging by Frederic Devernay -- frederic dot devernay at m4x dot org

The project home page is at http://devernay.github.io/cminpack

History

  • version 1.3.11 (13/09/2024):

    • Bump installed version number to 1.3.11 #75
  • version 1.3.10 (11/09/2024):

    • Disable BLAS by default #66 #70
    • Fix BLAS usage (broken by #58) #68
    • Fix testing on Windows #63
    • Fix pkg-config files #71
    • Bump minimum CMake version #69
  • version 1.3.9 (28/05/2024):

    • CMake portability fixes #50 #53 #56 #57 #58 #62
    • MKL-related fixes #51 #52
    • Support more CI build configurations #59 #61
  • version 1.3.8 (09/02/2021):

    • CMake now builds by default the single-, double-, and extended-precision versions #45 #48
    • Avoid promoting to doubles in all operations for the single-precision version #47
  • version 1.3.7 (09/12/2020):

    • Makefile cleanups #11
    • Cmake-related fixes #20 #21 #23 #27 #28
    • Add Appveyor CI #24
    • Add support for single-precision CBLAS and LAPACK #40
  • version 1.3.6 (24/02/2017):

    • Fix FreeBSD build #6
    • CMake: install CMinpackConfig.cmake rather than FindCMinpack.cmake #8
    • CMake: add option USE_BLAS to compile with blas #9
  • version 1.3.5 (28/05/2016):

    • Add support for compiling a long double version (Makefile only).
    • CMake: static libraries now have the suffix _s.
  • version 1.3.4 (28/05/2014):

    • Add FindCMinpack.cmake cmake module. If you use the cmake install, finding CMinpack from your CMakeLists.txt is as easy as find_package(CMinpack).
  • version 1.3.3 (04/02/2014):

  • version 1.3.2 (27/10/2013):

    • Minor change in the CMake build: also set SOVERSION.
  • version 1.3.1 (02/10/2013):

    • Fix CUDA examples compilation, and remove non-free files.
  • version 1.3.0 (09/06/2012):

    • Optionally use LAPACK and CBLAS in lmpar, qrfac, and qrsolv. Added make lapack to build the LAPACK-based cminpack and "make checklapack" to test it (results of the test may depend on the underlying LAPACK and BLAS implementations). On 64-bits architectures, the preprocessor symbol __LP64__ must be defined (see cminpackP.h) if the LAPACK library uses the LP64 interface (i.e. 32-bits integer, vhereas the ILP interface uses 64 bits integers).
  • version 1.2.2 (16/05/2012):

    • Update Makefiles and documentation (see "Using CMinpack" above) for easier building and testing.
  • version 1.2.1 (15/05/2012):

    • The library can now be built as double, float or half versions. Standard tests in the "examples" directory can now be lauched using make check (to run common tests, including against the float version), make checkhalf (to test the half version) and make checkfail (to run all the tests, even those that fail).
  • version 1.2.0 (14/05/2012):

    • Added original FORTRAN sources for better testing (type make -C fortran, then make -C examples and follow the instructions). Added driver tests lmsdrv, chkdrv, hyjdrv, hybdrv. make -C examples alltest will run all possible test combinations (make sure you have gfortran installed).
  • version 1.1.5 (04/05/2012):

    • cminpack now works in CUDA, thanks to Jordi Bataller Mascarell, type make -C cuda (be careful, though: this is a straightforward port from C, and each problem is solved using a single thread). cminpack can now also be compiled with single-precision floating point computation (define __cminpack_real__ to float when compiling and using the library). Fix cmake support for CMINPACK_LIB_INSTALL_DIR. Update the reference files for tests.
  • version 1.1.4 (30/10/2011):

    • Translated all the Levenberg-Marquardt code (lmder, lmdif, lmstr, lmder1, lmdif1, lmstr1, lmpar, qrfac, qrsolv, fdjac2, chkder`) to use C-style indices.
  • version 1.1.3 (16/03/2011):

    • Minor fix: Change non-standard strnstr() to strstr() in genf77tests.c.
  • version 1.1.2 (07/01/2011):

    • Fix Windows DLL building (David Graeff) and document covar in cminpack.h.
  • version 1.1.1 (04/12/2010):

    • Complete rewrite of the C functions (without trailing underscore in the function name). Using the original FORTRAN code, the original algorithms structure was recovered, and many goto's were converted to if...then...else. The code should now be both more readable and easier to optimize, both for humans and for compilers. Added lmddrv and lmfdrv test drivers, which test a lot of difficult functions (these functions are explained in Testing Unconstrained Optimization Software by Moré et al.). Also added the pkg-config files to the cmake build, as well as an "uninstall" target, contributed by Geoffrey Biggs.
  • version 1.0.4 (18/10/2010):

    • Support for shared library building using CMake, thanks to Goeffrey Biggs and Radu Bogdan Rusu from Willow Garage. Shared libraries can be enabled using cmake options, as in: cmake -DUSE_FPIC=ON -DBUILD_SHARED_LIBS=ON -DBUILD_EXAMPLES=OFF path_to_sources
  • version 1.0.3 (18/03/2010):

    • Added CMake support.
    • XCode build is now Universal.
    • Added tfdjac2_ and tfdjac2c examples, which test the accuracy of a finite-differences approximation of the Jacobian.
    • Bug fix in tlmstr1 (signaled by Thomas Capricelli).
  • version 1.0.2 (27/02/2009):

    • Added Xcode and Visual Studio project files
  • version 1.0.1 (17/12/2007):

    • bug fix in covar() and covar_(), the computation of tolr caused a segfault (signaled by Timo Hartmann).
  • version 1.0.0 (24/04/2007):

    • Added FORTRAN and C examples
    • Added documentation from Debian man pages
    • Wrote pure C version
    • Added covar() and covar_(), and use it in tlmdef/tlmdif

cminpack's People

Contributors

acxz avatar aklomp avatar anntzer avatar bherisse avatar devernay avatar edisongustavo avatar fernape avatar imciner2 avatar jschueller avatar luau-project avatar riegl-gc avatar stefanbruens avatar tadeu avatar tdsmith avatar weddingmm avatar xantares avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cminpack's Issues

[question] I don't get any result when using cminpack routines for the least squares nonlinear problem.

Hi everyone! I want to use cmipack to fit my data to different models (least squares nonlinear problem) but actually I see that routine returns 1 and initial guess vector is not changed, but the fitting problem is quite simple. I think that probably I'm doing something wrong.

My fitting problem is the following. Find parameters of gaussian function (amplitude, mu, and sigma) to fit the data:

  // abscissa
  const std::vector<double> x1{
    -3.01969624096814,
    -2.20911406128415,
    -1.39853188160016,
    -0.587949701916172,
    0.222632477767818,
    1.03321465745181,
    1.8437968371358,
    2.65437901681979,
    3.46496119650378
  };
  
  // data
  const std::vector<double> y1{
    22, 183, 917, 2446, 3239, 2263, 778, 140, 12
  };

It's obvious gaussian function as we can see. In cmipack we can use several functions to fit the data. I've tried lmdif1, when the derivatives are calculated automatically using forward finite difference approximation. In this case I need just define the function to minimize:

struct FData
{
  std::vector<double> x;
  std::vector<double> dataToModel;
};
int gaussian_cminpack(void* p, int m, int n, const double* x,
                       double* fvec, int flag)
{
  auto myData = reinterpret_cast<FData*>(p);

  for (int i = 0; i < m; ++i)
  {
    double y = x[2]  * exp(-0.5 * sqr((myData->x[i] - x[0]) / x[1])) / (sqrt(2 * PI) * x[1]);
    fvec[i] = abs(y - sqr(myData->dataToModel[i]));
  }
  return 0;
}

Then I just following the documentation and

  double iGuess[]{ 0.01, 0.6, 3239 };

  FData data{ x1, y1 };
  double fvec[9];
  int iwa[3];
  double wa[51];
  int lwa = 51;

  auto r = lmdif1(gaussian_cminpack, &data, 9, 3, iGuess, fvec, 0.01, iwa, wa, lwa);

I get r = 1 and iGuess is not changed. Why?

Also, I've tried to use lmder1, when I should give the jacobian 9x3 matrix and also I don't get some adequate result. Can you help me please?

library cannot be linked in Visual Studio 2010

The error informations are:
error LNK2001: unresolved external symbol __imp_hybrd1
error LNK2001: unresolved external symbol __imp_dpmpar

The library path and dependencies are both set in the project, how to fix it?

When will the version 1.3.9 be released ?

Hi @devernay , I found that in the version 1.3.8, cmake fails to find BLAS, and says cannot find MKL tool.

while in the master branch, find_package(CBLAS) has been replaced by find_package (BLAS). I tried the master branch version and it succeeded to find BLAS (both MKL and OpenBLAS). Since the previous 1.3.8 version was released in 2021, it might be suitable to release a new version containing some modern "features", at least for the BLAS issue. Anyway, thank you for the great library!

make check fail

cd /home
wget https://github.com/devernay/cminpack/archive/v1.3.9.tar.gz
tar -xf v1.3.9.tar.gz
cd v1.3.9.tar.gz
make check

make[2]: *** [Makefile:177: testhydrv] Error 1
*** Running CHK tests (calling MINPACK from C using ../libcminpacks.a)
for x in schkdrv_; do echo $x; ./$x < testdata/chkder.data > $x.out; diff -u ref/echo $x |sed -e s/_/c/.ref $x.out ; done
schkdrv_
--- ref/schkdrvc.ref 2024-05-29 05:09:16.000000000 +0800
+++ schkdrv_.out 2024-06-03 21:38:27.276142410 +0800

make[2]: *** [Makefile:181: testchkdrv] Error 1
make[2]: Target 'testdrv' not remade because of errors.
make[2]: Leaving directory '/root/cminpack-1.3.9/examples'
make[1]: [Makefile:269: checkfloat] Error 2 (ignored)
make clean LIBSUFFIX=s 2>&1 > /dev/null
make[1]: Leaving directory '/root/cminpack-1.3.9/examples'

[root@localhost cminpack-1.3.9]#cat /etc/os-release
NAME="CentOS Linux"
VERSION="8 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

Please consider suggesting an "official" suffix for single-precision builds

Currently, double-precision and single-precision builds default to sharing the same library name. As a consequence, downstream packagers (linux, conda) typically just package the double-precision version, and the single precision version is unavailable. In fact, it is not that difficult to provide both single and double precisions in e.g. a linux package; the single-precision library can simply use a separate name, and this is readily achieved with e.g. cmake ... -DBUILD_SHARED_LIBS=ON -DCMAKE_C_FLAGS=-D__cminpack_float__ -DCMAKE_RELEASE_POSTFIX=s which builds the single precision shared lib as libcminpacks.so (the "s" suffix being the one suggested in https://www.math.utah.edu/software/minpack.html#linking-local too).
Would you be willing to declare "officially" that it is preferred that downstream packagers provide both single and double precision versions of the library, with the single-precision using the "s" suffix (for example)?

undefined reference to `cblas_dnrm2'

Hello,
I think the cmake is not linking to cblas as it should:

CMakeFiles/cminpack.dir/objects.a(enorm.c.obj): In function `enorm':
/home/xantares/projects/aur-scripts/mingw-w64-cminpack/src/cminpack-1.3.6/enorm.c:53: undefined reference to `cblas_dnrm2'

Adding target_link_libraries(cminpack PUBLIC cblas) manually solves the problem, but this needs cleaner detection, for example if needing openblas. Maybe be linking to blas/cblas is private.

Can the function 'lmdif' handle complex nonlinear equation systems?

Especially when the number of problems m is greater than that of variables n. I've tried some simple nonlinear equations and it runs very well, but once the problem becomes complex, results are not correct always. I adjusted the initial value of variables x and some parameters like factor, but it turned out useless.
So I wonder if there is any improvement of the function 'lmdif' or 'lmder' to deal with more complex problems? Or what I can modify to make it work better?

Are all tests expected to pass?

I've simply cloned the repo (master & v1.3.6) and used CMake to build and run the tests. But one test fails on consistently on all platforms (Linux, Mac, Windows). I could not find any open issues about a failing test therefore I thought I'd ask whether this is known and/or to be expected.

Steps to reproduce:

Clone repository and change to project's root folder. In this folder run:

cmake -H. -Bbuild
cmake --build build -- -j
cmake -E env CTEST_OUTPUT_ON_FAILURE=1 cmake --build build --target test

Result:

96% tests passed, 1 tests failed out of 24

Total Test time (real) =   0.54 sec

The following tests FAILED:
	 16 - tlmdifc (Failed)
Errors while running CTest
Makefile:108: recipe for target 'test' failed
make: *** [test] Error 8

The test output written to build/examples/tlmdifc.out is:

 final l2 norm of the residuals     0.09063596

 number of function evaluations        21

 exit parameter                         1

 final approximate solution

     0.08241058       1.133037       2.343695
 covariance

   0.0001531202    0.002869942   -0.002656662
    0.002869942     0.09480937    -0.09098997
   -0.002656662    -0.09098997     0.08778729

These results are from a run on Ubuntu Bionic amd64 but the very same test also failed for me on Mac and Windows.

Malformed version in generated pkgconfig file

The CMINPACK_VERSION variable contains a semicolon separated list of strings:

set (CMINPACK_VERSION 1.3.9 STRING "CMinpack version")

i.e. 1.3.9;STRING;CMinpack\ version. See https://cmake.org/cmake/help/latest/command/set.html#set :

Multiple arguments will be joined as a semicolon-separated list to form the actual variable value to be set.

After

configure_file (cmake/cminpack.pc.in ${pkg_conf_file} @ONLY)

the pkgconfig file contains the following Version field:

Version: 1.3.8;STRING;CMinpack version

Postfix for debug libraries

Hi Frédéric

Issue 1: Would you mind adding a debug postfix to the debug builds?

if (BUILD_SHARED_LIBS)
  message (STATUS "Building shared libraries.")
  set(CMAKE_DEBUG_POSTFIX -gd)
else ()
  message (STATUS "Building static libraries.")
  set(CMAKE_RELEASE_POSTFIX _s)
  set(CMAKE_RELWITHDEBINFO_POSTFIX _s)
  set(CMAKE_DEBUG_POSTFIX _s-gd)
  set(CMAKE_MINSIZEREL_POSTFIX _s)
  if(WIN32)
	add_definitions(-DCMINPACK_NO_DLL)
  endif(WIN32)
endif ()

Issue 2: There is a warning in CMake because of this condition.

if (OS_LINUX OR ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
	option (USE_FPIC "Use the -fPIC compiler flag." ON)
else (OS_LINUX)
	option (USE_FPIC "Use the -fPIC compiler flag." OFF)
endif (OS_LINUX)

Warning:

CMake Warning (dev) in CMakeLists.txt:
  A logical block opening on the line

    C:/src/cminpack-1.3.6/CMakeLists.txt:23 (if)

  closes on the line

    C:/src/cminpack-1.3.6/CMakeLists.txt:27 (endif)

  with mis-matching arguments.
This warning is for project developers.  Use -Wno-dev to suppress it.

I would change it to:

if (OS_LINUX OR ${CMAKE_SYSTEM_NAME} STREQUAL "FreeBSD")
	option (USE_FPIC "Use the -fPIC compiler flag." ON)
else ()
	option (USE_FPIC "Use the -fPIC compiler flag." OFF)
endif ()

Cheers
Andreas

1.3.7 release

Hi @devernay! First, thanks for maintaining this project, it's awesome to have an actually maintained "alternative" to the very old Fortran MINPACK!
I'd like to know if there are plans for a new 1.3.7 release (or if it could be released soon), because I'd like to create packages for cminpack on conda-forge. Thanks!

Can we use template to pass not only function pointer, but lambda, functor or something else?

In cminpack, two types of function pointer are used. For example, as for hybrd, we could pass a function pointer to it, which is like
void(*fun)(const int *n, const real *x, real *fvec, int *iflag) or int (*fun)(void *p, int n, const real *x, real *fvec, int iflag). The void *p in the latter type is used to pass additional parameters without using global variables.
But if we want to use lambda, functor, or something else, we cannot make it. So, why not use some templates, so that we are not only able to pass a static type function pointer to hybrd, but also lambda, functor or other stuff.

Functions missing in windows

I'm compiling a fortran package in linux and windows.
It perfectly link with minpack in linux, but the next functions are missing in windows:
qrfac_' qform_' dogleg_' r1updt_' r1mpyq_' r1mpyq_'
I'm using the package stored in conda-forge

Libs from pkg-config should probably not be used in WIN32 CMake config

Currently the use of pkg-config in CMinpackConfig.cmake in WIN32 is making it append ;cminpack;m to CMINPACK_LIBRARIES, and this causes linkage problems, since these libraries cannot be found.

Output of the relevant part from CMake:

-- Found PkgConfig: C:/ProgramData/chocolatey/bin/pkg-config.exe (found version "0.28")
-- Checking for module 'cminpack'
--   Found cminpack, version 1.3.6
-- Found CMinpack: C:/prefix/lib/cminpack.lib
-- CMinPack found (include: C:/prefix/include/cminpack-1, libs: optimized;C:/prefix/lib/cminpack.lib;debug;C:/prefix/lib/cminpack.lib;cminpack;m)

Multiple copies of everything, and comments are out of date? What file do I actually /want/ (and how do you use it)?

I'm trying to port some python code that uses hybrd to C++, and finding it very hard to follow what's going on in this package:

There seems to be two versions of every file - hybrd_.c and hybrd.c, for example. I think that hybrd_.c is the one that's been significantly updated?

http://devernay.free.fr/hacks/cminpack/ says this is a significant rework, but the github readme says:

This is a C version of the minpack minimization package. It has been derived from the fortran code using f2c and some limited manual editing.

As far as I can tell, http://devernay.free.fr/hacks/cminpack/ links to this github project, so is the github readme out of date?

Additionally, it seems like the comments in the various files have never been updated. I'm trying to figure out how to use the void* facility:

The function to be minimized and all the Minpack functions now take an extra "void*" argument, which can be used to pass any pointer-to-struct or pointer-to-class, and you can put all you extra parameters and data in that struct. Just cast this pointer to the appropriate pointer type in your function, and there they are! There is no need for global variables anymore. Be careful if you access the same object from different threads, though (a solution is to protect this extra data with a mutex).

But I'm getting lost somewhere in the #define macro maze, and the comments in https://github.com/devernay/cminpack/blob/master/hybrd1.c seem to be the ones from the original fortran. I also can't seem to find any documentation of the changes, or the new function signatures after all the precompiler munging.


It seems like it'd be optimal to take the original versions, which are kept for historical reasons (?), and at least put them in a subdirectory so they don't clutter up everything anymore.

There's a lot of precompiler magic. For example, the first parameter in hybrd is __cminpack_decl_fcn_nn__, but I have no idea where it's coming from. cminpack.h then #defines it to just cminpack_func_nn fcn_nn, neither component of which is defined anywhere, and I have no idea how this file ever compiles. I can only assume something else string-munges to cminpack_func_nn or fcn_nn (holy crap that's confusing).

For that matter, just naively reading the headers is confusing:

__cminpack_attr__
int CMINPACK_EXPORT __cminpack_func__(hybrd1)( __cminpack_decl_fcn_nn__
        void *p, int n, __cminpack_real__ *x, __cminpack_real__ *fvec, __cminpack_real__ tol,
        __cminpack_real__ *wa, int lwa );

Without preprocessing that, does it take the first parameter of __cminpack_decl_fcn_nn__ void *p, where __cminpack_decl_fcn_nn__ is some sort of accessibility specifier, or (as I infer from the documentation) is __cminpack_decl_fcn_nn__ somehow a separate argument despite the lack of a comma? How does that work?

I don't know if I have a coherent question here aside from ".....wat", but in general, I think the documentation needs a little cleanup. I've used doxygen for generating "what it looks like in use" docs before, with great success.

I'm gonna try to convince the precompiler to tell me what the functions I'm calling actually look like.

Basic questions about C/C++ minpack

Hi,

I'm considering using your package for a problem I have.

  1. Can your tool be used in visual studio 2015, windows 10?
  2. I can see some CUDA source files, are the minimization algorithms implemented in CUDA as well? or they're just generic examples?
  3. Can your tool fit a functions f : R^m -> R^n? or is it restricted only to scalar functions?
  4. If 3 is yes, is there a bound on the number of parameters to be fit? I have to fit functions that have 192^2 parameters.

Thank you

1.3.10 installed dylibs with 1.3.9 version

Is this intended?

36-202% port -v installed cminpack
The following ports are currently installed:
  cminpack @1.3.8_0 requested_variants='' platform='darwin 10' archs='ppc' date='2023-03-08T16:08:00+0800'
  cminpack @1.3.9_0 requested_variants='' platform='darwin 10' archs='ppc' date='2024-06-01T18:47:24+0800'
  cminpack @1.3.10_0 (active) requested_variants='' platform='darwin 10' archs='ppc' date='2024-09-13T09:51:02+0800'
36-202% port contents cminpack
Port cminpack @1.3.10_0 contains:
  /opt/local/include/cminpack-1/cminpack.h
  /opt/local/include/cminpack-1/minpack.h
  /opt/local/lib/libcminpack.1.3.9.dylib
  /opt/local/lib/libcminpack.1.dylib
  /opt/local/lib/libcminpack.dylib
  /opt/local/lib/libcminpackld.1.3.9.dylib
  /opt/local/lib/libcminpackld.1.dylib
  /opt/local/lib/libcminpackld.dylib
  /opt/local/lib/libcminpacks.1.3.9.dylib
  /opt/local/lib/libcminpacks.1.dylib
  /opt/local/lib/libcminpacks.dylib
  /opt/local/lib/pkgconfig/cminpack.pc
  /opt/local/lib/pkgconfig/cminpackld.pc
  /opt/local/lib/pkgconfig/cminpacks.pc
  /opt/local/share/cminpack/CMinpackConfig-macports.cmake
  /opt/local/share/cminpack/CMinpackConfig.cmake
  /opt/local/share/cminpack/CopyrightMINPACK.txt

There is nothing in MacPorts to set the version manually here.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.