FAQ: Difference between revisions
Jump to navigation
Jump to search
→Why is Octave's floating-point computation wrong?
m (→Do I need GCC to build Octave from the source code?: Grammatical errors) |
|||
(19 intermediate revisions by 4 users not shown) | |||
Line 8: | Line 8: | ||
* Search for an answer in our [https://lists.gnu.org/archive/html/help-octave/ mailing list archives] | * Search for an answer in our [https://lists.gnu.org/archive/html/help-octave/ mailing list archives] | ||
* Contact our user community using our [https:// | * Contact our user community using our [https://octave.discourse.group Octave Discourse]. | ||
* Contact our user community using our [https://webchat.freenode.net/?channels=octave IRC chat room <code>#octave</code> in Freenode] | * Contact our user community using our [https://webchat.freenode.net/?channels=octave IRC chat room <code>#octave</code> in Freenode] | ||
Line 28: | Line 28: | ||
==Who uses Octave?== | ==Who uses Octave?== | ||
A huge number of people ranging from students to researchers involved in various fields such as statistics,Machine Learning, data analytics, etc | A huge number of people ranging from students to researchers involved in various fields such as statistics,Machine Learning, data analytics, etc. Universities use it for research and teaching, companies of all sizes for development and individuals for certain private purposes. See [[Who Uses Octave?]] for more clarity. | ||
==Who develops Octave?== | ==Who develops Octave?== | ||
Line 42: | Line 42: | ||
The [https://www.gnu.org/ GNU Project] was launched in 1984 to develop a complete Unix-like operating system which is free software: the GNU system. GNU is a recursive acronym for "GNU's Not Unix"; it is pronounced [https://www.gnu.org/gnu/pronunciation.en.html g'noo]. | The [https://www.gnu.org/ GNU Project] was launched in 1984 to develop a complete Unix-like operating system which is free software: the GNU system. GNU is a recursive acronym for "GNU's Not Unix"; it is pronounced [https://www.gnu.org/gnu/pronunciation.en.html g'noo]. | ||
The [https://www.fsf.org/ Free Software Foundation (FSF)] is the principal | The [https://www.fsf.org/ Free Software Foundation (FSF)] is the principal organization that has sponsored the GNU Project. | ||
Octave became GNU Octave in 1997 (beginning with [[Release History|version 2.0.6]]). This meant agreeing to consider Octave a part of the GNU Project and support the efforts of the FSF. A big part of this effort is to adhere to the [https://www.gnu.org/prep/standards/standards.html GNU coding standards] and to benefit from GNU's infrastructure (e.g. [https://hg.savannah.gnu.org/hgweb/octave/ code hosting] and [http://bugs.octave.org bug tracking]). Additionally, Octave receives [https://my.fsf.org/donate/working-together/octave sponsorship] from the FSF's Working Together fund. However, Octave is not and has never been developed by the FSF. | Octave became GNU Octave in 1997 (beginning with [[Release History|version 2.0.6]]). This meant agreeing to consider Octave a part of the GNU Project and support the efforts of the FSF. A big part of this effort is to adhere to the [https://www.gnu.org/prep/standards/standards.html GNU coding standards] and to benefit from GNU's infrastructure (e.g. [https://hg.savannah.gnu.org/hgweb/octave/ code hosting] and [http://bugs.octave.org bug tracking]). Additionally, Octave receives [https://my.fsf.org/donate/working-together/octave sponsorship] from the FSF's Working Together fund. However, Octave is not and has never been developed by the FSF. | ||
Line 52: | Line 52: | ||
John W. Eaton, David Bateman, Søren Hauberg, Rik Wehbring ({{Release Year}}). | John W. Eaton, David Bateman, Søren Hauberg, Rik Wehbring ({{Release Year}}). | ||
GNU Octave version {{Release}} manual: a high-level interactive language for numerical computations. | GNU Octave version {{Release}} manual: a high-level interactive language for numerical computations. | ||
URL https:// | URL https://octave.org/doc/v{{Release}}/ | ||
A [https://en.wikipedia.org/wiki/BibTeX BibTeX] entry for [https://en.wikipedia.org/wiki/LaTeX LaTeX] users is: | A [https://en.wikipedia.org/wiki/BibTeX BibTeX] entry for [https://en.wikipedia.org/wiki/LaTeX LaTeX] users is: | ||
Line 60: | Line 60: | ||
author = {John W. Eaton and David Bateman and S{\o}ren Hauberg and Rik Wehbring}, | author = {John W. Eaton and David Bateman and S{\o}ren Hauberg and Rik Wehbring}, | ||
year = <span>{</span>{{Release Year}}}, | year = <span>{</span>{{Release Year}}}, | ||
url = {https:// | url = {[https://octave.org/doc/v{{Release}}/ https://octave.org/doc/v{{Release}}/]}, | ||
} | } | ||
Run {{manual|citation}} at the Octave prompt for details on how to best cite the Octave version you are running. Certain Octave packages also have recommended citations in which case use <code>citation package_name</code>. | Run {{manual|citation}} at the Octave prompt for details on how to best cite the Octave version you are running. Certain Octave packages also have recommended citations in which case use <code>citation package_name</code>. | ||
Note that there are two reasons for citing the software used. One is giving recognition to the work done by others which we have already addressed to . The other is giving details on the system used so that experiments can be replicated. For this, you should cite the version of Octave and all packages used (you can get this information using the <code>ver</code> command), as well as any details of your setup as part of your Methods. In addition, you should make your source available as well . See [http://software.ac.uk/so-exactly-what-software-did-you-use How to cite and describe software] for more details and an in depth discussion for the same . | Note that there are two reasons for citing the software used. One is giving recognition to the work done by others which we have already addressed to. The other is giving details on the system used so that experiments can be replicated. For this, you should cite the version of Octave and all packages used (you can get this information using the <code>ver</code> command), as well as any details of your setup as part of your Methods. In addition, you should make your source available as well. See [http://software.ac.uk/so-exactly-what-software-did-you-use How to cite and describe software] for more details and an in depth discussion for the same. | ||
==What documentation exists for Octave?== | ==What documentation exists for Octave?== | ||
Line 82: | Line 82: | ||
The following steps have been the solution to several bug reports and help requests. Please try them before asking for further support. If nothing below helps, please give us the following information: | The following steps have been the solution to several bug reports and help requests. Please try them before asking for further support. If nothing below helps, please give us the following information: | ||
* Operating system: e.g. [https://support.microsoft.com/en-us/help/13443/windows-which-version-am-i-running '''Windows 10 (version | * Operating system: e.g. [https://support.microsoft.com/en-us/help/13443/windows-which-version-am-i-running '''MS Windows 10 (version 2004)'''] or '''Ubuntu 20.04''' | ||
* GNU Octave version: e.g. '''Version {{Release}}''' | * GNU Octave version: e.g. '''Version {{Release}}''' | ||
* Installation method: e.g. '''Downloaded and installed "octave-{{Release}}-w64-installer.exe" from https://www.octave.org/download.html''' | * Installation method: e.g. '''Downloaded and installed "octave-{{Release}}-w64-installer.exe" from https://www.octave.org/download.html''' | ||
Line 88: | Line 88: | ||
=== MS Windows === | === MS Windows === | ||
* After upgrade the GUI does not open / shuts down immediately. | * After Octave upgrade the GUI does not open / shuts down immediately. | ||
** '''Solution:''' Delete the folder {{path|C:\Users\YOUR_USER_NAME\.config\octave}} | ** '''Solution:''' | ||
*** Version 5.2.0 and older: Delete the folder {{path|C:\Users\YOUR_USER_NAME\.config\octave}} | |||
*** Version 6.1.0 and newer: Delete the folder {{path|%APPDATA%\octave}}, which generally is located at {{path|C:\Users\YOUR_USER_NAME\AppData\Roaming\octave}} | |||
* Missing/conflicting files. | * Missing/conflicting files. | ||
** '''Solution:''' Remove/Uninstall all existing Octave versions. Restart the system. Install GNU Octave again. | ** '''Solution:''' Remove/Uninstall all existing Octave versions. Restart the system. Install GNU Octave again. | ||
* Permission errors. | |||
** '''Solution | * Permission errors | ||
** '''Solution | ** '''Solution 1:''' Octave on MS Windows uses VBS scripts to start the program. You can test whether your system is blocking VBS scripts by doing the following: | ||
**# Using Notepad or another text editor, create a text file containing only the text: <pre>msgbox("This is a test script, Click OK to close")</pre> | |||
**# Save the file on your Desktop with the name {{Path|testscript.vbs}} (be sure that the editor didn't end it in .txt or .vbs.txt). | |||
**# Double click the file. If scripts can run, a popup window will appear with that message. | |||
**#* If the file opens in notepad or an editor, it means it still ended in .txt. MS Windows insecurely hides file extensions by default. To show file extensions follow [https://answers.microsoft.com/en-us/windows/forum/all/in-win10-how-to-show-the-file-extension-for/ed21ff20-cdb3-4263-9c7d-fc6ed125fc82 these instructions at Microsoft.com]. | |||
**#* If both {{Path|testscript.vbs}} and {{Path|octave.vbs}} open a text- or other editor, it means your MS Windows file associations have .vbs files associated with another program. To fix this, right click the .vbs file, select "Open With", select "Choose Another App", check the box that says "Always use this app to open .vbs files". Finally, select "Microsoft Windows Based Script Host" from the list. If it is not in the list, select "More apps". If still not there, select "Look for Another App on this PC" and navigate to {{Path|C:\Windows\System32\wscript.exe}}, select it, and select "Open". If {{Path|wscript}} is still not present you will need to seek assistance installing missing MS Windows components. | |||
**# Try moving {{Path|testscript.vbs}} to another location, such as a {{Path|C:\temp folder}}. Additionally try to move {{Path|testscript.vbs}} in the Octave installation folder containing {{Path|octave.vbs}} and see if VBS scripts can be run there. | |||
**# If {{Path|testscript.vbs}} doesn't run in any of those locations, then scripting appears to be disabled or blocked on your system. If {{Path|testscript.vbs}} runs in some locations but not others, there there may be other security permissions errors to be solved. If {{Path|testscript.vbs}} runs in the same folder as {{Path|octave.vbs}}, but directly double-clicking on {{Path|octave.vbs}} does not start Octave, then there appears to be some problem other than script permissions. | |||
** '''Solution 2:''' Consult your malware detection (a.k.a. AntiVirus) software, if files are blocked. | |||
** '''Solution 3:''' Did you install Octave on a network-drive? Do you have the execution permissions? | |||
** '''Solution 4:''' Is your computer managed by your company? Does your administrator prohibit script execution? | |||
==I do not see any output of my script until it has finished?== | ==I do not see any output of my script until it has finished?== | ||
Line 122: | Line 134: | ||
==Why is Octave's floating-point computation wrong?== | ==Why is Octave's floating-point computation wrong?== | ||
Floating-point arithmetic is an approximation '''in binary''' to arithmetic on real or complex numbers. Just like you cannot represent 1/3 exactly in decimal arithmetic (0.333333... is only a rough approximation to 1/3), you cannot represent some fractions like <math>1/10</math> exactly in base 2. In binary, the representation to one tenth is <math>0.0\overline{0011}_b</math> where the bar indicates that it repeats infinitely (like how <math>1/6 = 0.1\overline{6}_d</math> in decimal). Because this infinite repetition cannot be represented exactly with a finite number of digits, rounding errors occur for values that appear to be exact in decimal but are in fact approximations in binary, such as for example how 0.3 - 0.2 - 0.1 is not equal to zero. | Floating-point arithmetic is an approximation '''in binary''' to arithmetic on real or complex numbers. Just like you cannot represent 1/3 exactly in decimal arithmetic (0.333333... is only a rough approximation to 1/3 for any finite number of 3s), you cannot represent some fractions like <math>1/10</math> exactly in base 2. In binary, the representation to one tenth is <math>0.0\overline{0011}_b</math> where the bar indicates that it repeats infinitely (like how <math>1/6 = 0.1\overline{6}_d</math> in decimal). Because this infinite repetition cannot be represented exactly with a finite number of digits, rounding errors occur for values that appear to be exact in decimal but are in fact approximations in binary, such as for example how 0.3 - 0.2 - 0.1 is not equal to zero. | ||
In addition, some advanced operations are computed by approximation and there is no guarantee for them to be accurate, see [https://en.wikipedia.org/wiki/Rounding#Table-maker.27s_dilemma Table-maker's dilemma] for further references . Their results are system-dependent. | In addition, some advanced operations are computed by approximation and there is no guarantee for them to be accurate, see [https://en.wikipedia.org/wiki/Rounding#Table-maker.27s_dilemma Table-maker's dilemma] for further references. Their results are system-dependent. | ||
This isn't a bug that is limited to GNU-Octave & it happens with any program that uses [https://en.wikipedia.org/wiki/IEEE_754 IEEE 754 floating-point arithmetic]. To be fair, IEEE 754 also specifies decimal floating-point arithmetic, which has never seen wide adoption. The reason why Octave and other programs using IEEE 754 binary floating-point numbers is that they are ''fast'', because they are implemented in hardware or system libraries. Unless you are using very exotic hardware, Octave will use your computer's processor for basic floating-point arithmetic. | This isn't a bug that is limited to GNU-Octave & it happens with any program that uses [https://en.wikipedia.org/wiki/IEEE_754 IEEE 754 floating-point arithmetic]. To be fair, IEEE 754 also specifies decimal floating-point arithmetic, which has never seen wide adoption. The reason why Octave and other programs using IEEE 754 binary floating-point numbers is that they are ''fast'', because they are implemented in hardware or system libraries. Unless you are using very exotic hardware, Octave will use your computer's processor for basic floating-point arithmetic. | ||
Line 136: | Line 148: | ||
Some windows users with integrated Intel GPUs have reported missing lines when printing with an OpenGL toolkit like FLTK or Qt. {{bug|42534}} | Some windows users with integrated Intel GPUs have reported missing lines when printing with an OpenGL toolkit like FLTK or Qt. {{bug|42534}} | ||
Users with this kind of problem should try to install/update their Intel OpenGL drivers for Windows or consider installing Mesa drivers from http://qt-project.org/wiki/Cross-compiling-Mesa-for-Windows . | Users with this kind of problem should try to install/update their Intel OpenGL drivers for Windows or consider installing Mesa drivers from http://qt-project.org/wiki/Cross-compiling-Mesa-for-Windows. | ||
See also https://www.opengl.org/wiki/FAQ#Why_is_my_GL_version_only_1.4_or_lower.3F . | See also https://www.opengl.org/wiki/FAQ#Why_is_my_GL_version_only_1.4_or_lower.3F . | ||
Line 146: | Line 158: | ||
==Error message about invalid call to script or invalid use of script in index expression== | ==Error message about invalid call to script or invalid use of script in index expression== | ||
If Octave shows an error message about {{Codeline|invalid call to script .../close.m}} or {{Codeline|invalid use of of script .../close.m in index expression}}, it means that you have created a script called close.m that is overriding the built-in Octave function {{Codeline|close}}. Octave functions and scripts share the same global namespace. It is best to avoid creating your own scripts or functions that have the same name as an Octave function as to avoid this error regarding the invalid call to script or invalid use of script in index expression . | If Octave shows an error message about {{Codeline|invalid call to script .../close.m}} or {{Codeline|invalid use of of script .../close.m in index expression}}, it means that you have created a script called close.m that is overriding the built-in Octave function {{Codeline|close}}. Octave functions and scripts share the same global namespace. It is best to avoid creating your own scripts or functions that have the same name as an Octave function as to avoid this error regarding the invalid call to script or invalid use of script in index expression. | ||
=Licensing issues= | =Licensing issues= | ||
Line 185: | Line 197: | ||
==How can I install Octave on Windows?== | ==How can I install Octave on Windows?== | ||
:'' So as to install GNU-Octave for Windows O.S ,refer to : [[Octave for Microsoft Windows]]'' | :'' So as to install GNU-Octave for Windows O.S, refer to : [[Octave for Microsoft Windows]]'' | ||
==How can I install Octave on MacOS?== | ==How can I install Octave on MacOS?== | ||
:''So as to install GNU-Octave for MacOS ,refer to : [[Octave for macOS]]'' | :''So as to install GNU-Octave for MacOS, refer to : [[Octave for macOS]]'' | ||
==How can I install Octave on GNU/Linux?== | ==How can I install Octave on GNU/Linux?== | ||
:'' So as to install GNU-Octave on GNU/Linux ,refer to: [[Octave for GNU/Linux]]'' | :'' So as to install GNU-Octave on GNU/Linux, refer to: [[Octave for GNU/Linux]]'' | ||
==How to install Octave on Android OR What is the Octave app available in the Google Play store?== | ==How to install Octave on Android OR What is the Octave app available in the Google Play store?== | ||
Line 238: | Line 250: | ||
=What's new in Octave?= | =What's new in Octave?= | ||
Each new Octave release introduces many new features. A complete list of user visible changes can be seen by running <code>news</code> at the Octave prompt. | Each new Octave release introduces many new features. A complete list of user visible changes can be seen by running <code>news</code> at the Octave prompt. | ||
* '''What's new in the next version of Octave?''' | |||
** See the [https://hg.savannah.gnu.org/hgweb/octave/file/tip/NEWS NEWS file] on the development branch. | |||
* | * '''What was new in Octave Version X.Y.Z?''' | ||
** See [[Release History]]. | |||
* | |||
* | |||
See | |||
* | |||
* [ | |||
=Packages and Octave Forge= | =Packages and Octave Forge= | ||
Line 455: | Line 403: | ||
==How do I increase Octave's precision?== | ==How do I increase Octave's precision?== | ||
Octave's default numerical type is [https://en.wikipedia.org/wiki/IEEE_754 IEEE 754] binary64 , a.k.a. "double" or "hardware floats". This type has a precision of 53 bits or about 16 decimal digits. It is supported by each modern computer hardware, so it is really '''fast'''. This type is assumed throughout for Octave's calculations. If more precision was required, one can obtain a "few bits more" by using integer types, e.g. {{manual|uint64}}, but in general one cannot expect more precision from any '''fast''' numerical software. Just to visualize "how big" those numerical limits are, consider the following table: | Octave's default numerical type is [https://en.wikipedia.org/wiki/IEEE_754 IEEE 754] binary64, a.k.a. "double" or "hardware floats". This type has a precision of 53 bits or about 16 decimal digits. It is supported by each modern computer hardware, so it is really '''fast'''. This type is assumed throughout for Octave's calculations. If more precision was required, one can obtain a "few bits more" by using integer types, e.g. {{manual|uint64}}, but in general one cannot expect more precision from any '''fast''' numerical software. Just to visualize "how big" those numerical limits are, consider the following table: | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 515: | Line 463: | ||
>> corr | >> corr | ||
corr corrcoef | corr corrcoef | ||
=Differences between Octave and Matlab= | =Differences between Octave and Matlab= | ||
:''See [[Differences between Octave and Matlab]]''. | |||
and | |||
=[https://en.wikipedia.org/wiki/Graphical_user_interface GUI]= | =[https://en.wikipedia.org/wiki/Graphical_user_interface GUI]= | ||
Line 1,008: | Line 519: | ||
This is one of those times where the best documentation is to read the existing code. We have three different toolkits in Octave now, so there are some examples to draw from. | This is one of those times where the best documentation is to read the existing code. We have three different toolkits in Octave now, so there are some examples to draw from. | ||
=Development | = Development = | ||
== When will feature X be released or implemented? == | |||
When it's ready, sooner [https://www.octave.org/get-involved.html if you help]. You can [https://savannah.gnu.org/patch/?group=octave send us patches] if you can implement feature X yourself. If you can't, some [https://www.octave.org/commercial-support.html developers may be convinced to work on your specific problem for some money]. | |||
== How can I get involved in Octave development? == | |||
:''See [[Developer FAQ]]''. | |||
[[Category:FAQ]] |