Skip to content

Instantly share code, notes, and snippets.

View halirutan's full-sized avatar

Patrick Scheibe halirutan

  • Neurophysics Dep. at Max Planck Institute for Human Cognitive and Brain Sciences
  • Leipzig, Germany
View GitHub Profile
@halirutan
halirutan / verifier.gradle.kts
Created March 9, 2020 07:21
Gradle task for locally verifying an IntelliJ Plugin
import org.gradle.api.internal.ConventionTask
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("de.undercouch:gradle-download-task:4.0.2")
}
}
/*
* Copyright (c) 2018 Patrick Scheibe
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
/*
* Copyright (c) 2017 Patrick Scheibe
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
/*
* Copyright (c) 2018 Patrick Scheibe
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
\[Aleph];
\[Alpha];
\[And];
\[Angle];
\[Angstrom];
\[AscendingEllipsis];
\[Backslash];
\[BeamedEighthNote];
\[BeamedSixteenthNote];
\[Because];
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

Two months ago, Albert Rich posted "What's the hardest integral Mathematica running Rubi can find?" here on the Wolfram Community. You might have also seen that I answered in detail and pointed out the things that could help to improve Rubi. While it appears nothing really happened afterward, this is far from reality. Since then, Albert and I have worked closely together to make Rubi more accessible. If you like to read about how this all started, let me invite you to read my latest blog-post about our collaboration. However, here, we want to share an update that should serve as an overview of what we have done to improve Rubi.

First of all, Rubi has got a new home under rulebasedintegration.org and Albert's old site will no longer be updated. On the new website, you will find information, installation instructions, and links to the source-code and test-suites.

This file has been truncated, but you can view the full file.
Int[Times[Optional[Pattern[u, Blank[]]], Power[Plus[Pattern[a, Blank[]], Times[Optional[Pattern[b, Blank[]]], Power[Pattern[x, Blank[]], Optional[Pattern[n, Blank[]]]]]], Optional[Pattern[p, Blank[]]]]], Pattern[x, Blank[Symbol]]] := Int[u*(b*x^n)^p, x] /; FreeQ[{a, b, n, p}, x] && EqQ[a, 0]
Int[Times[Optional[Pattern[u, Blank[]]], Power[Plus[Optional[Pattern[a, Blank[]]], Times[Optional[Pattern[b, Blank[]]], Power[Pattern[x, Blank[]], Optional[Pattern[n, Blank[]]]]]], Optional[Pattern[p, Blank[]]]]], Pattern[x, Blank[Symbol]]] := Int[u*a^p, x] /; FreeQ[{a, b, n, p}, x] && EqQ[b, 0]
Int[Times[Optional[Pattern[u, Blank[]]], Power[Plus[Pattern[a, Blank[]], Times[Optional[Pattern[c, Blank[]]], Power[Pattern[x, Blank[]], Optional[Pattern[j, Blank[]]]]], Times[Optional[Pattern[b, Blank[]]], Power[Pattern[x, Blank[]], Optional[Pattern[n, Blank[]]]]]], Optional[Pattern[p, Blank[]]]]], Pattern[x, Blank[Symbol]]] := Int[u*(b*x^n + c*x^(2*n))^p, x] /; FreeQ[{a, b, c, n, p}, x] && EqQ[j, 2*n] && EqQ[a, 0]
Int[Times[Opti
This file has been truncated, but you can view the full file.
// {Sqrt[1 + 2*x], x, 1, (1 + 2*x)^(3/2)/3}
public void test00001() {
check("Integrate[Sqrt[1 + 2*x], x]", "(1 + 2*x)^(3/2)/3");
}
// {(1 + x)/(2 + 2*x + x^2)^3, x, 1, -1/(4*(2 + 2*x + x^2)^2)}
public void test00002() {
check("Integrate[(1 + x)/(2 + 2*x + x^2)^3, x]", "-1/(4*(2 + 2*x + x^2)^2)");
This file has been truncated, but you can view the full file.
Int[(u_.)*((a_) + (b_.)*(x_)^(n_.))^(p_.), x_Symbol] := Int[u*(b*x^n)^p, x] /; FreeQ[{a, b, n, p}, x] && EqQ[a, 0]
Int[(u_.)*((a_.) + (b_.)*(x_)^(n_.))^(p_.), x_Symbol] := Int[u*a^p, x] /; FreeQ[{a, b, n, p}, x] && EqQ[b, 0]
Int[(u_.)*((a_) + (c_.)*(x_)^(j_.) + (b_.)*(x_)^(n_.))^(p_.), x_Symbol] := Int[u*(b*x^n + c*x^(2*n))^p, x] /; FreeQ[{a, b, c, n, p}, x] && EqQ[j, 2*n] && EqQ[a, 0]
Int[(u_.)*((a_.) + (c_.)*(x_)^(j_.) + (b_.)*(x_)^(n_.))^(p_.), x_Symbol] := Int[u*(a + c*x^(2*n))^p, x] /; FreeQ[{a, b, c, n, p}, x] && EqQ[j, 2*n] && EqQ[b, 0]
Int[(u_.)*((a_.) + (c_.)*(x_)^(j_.) + (b_.)*(x_)^(n_.))^(p_.), x_Symbol] := Int[u*(a + b*x^n)^p, x] /; FreeQ[{a, b, c, n, p}, x] && EqQ[j, 2*n] && EqQ[c, 0]
Int[(u_.)*((w_.) + (a_.)*(v_) + (b_.)*(v_))^(p_.), x_Symbol] := Int[u*((a + b)*v + w)^p, x] /; FreeQ[{a, b}, x] && !FreeQ[v, x]
Int[(u_.)*(Px_)^(p_), x_Symbol] := Int[u*Px^Simplify[p], x] /; PolyQ[Px, x] && !RationalQ[p] && FreeQ[p, x] && RationalQ[Simplify[p]]
Int[a_, x_Symbol] := Simp[a*x, x] /; FreeQ[a, x]
Int[