Jump Further When Key Is Held Down

I’m trying to make my player jump further if they hold down the W key. However, it appears that my player will always jump the same distance. I’ve been trying to figure this out for a rather long period of time now, and have not been able to find an answer yet. Thank you much for any help!

using UnityEngine;
using System.Collections;

public class JumpInC : MonoBehaviour {

	private float distToGround;

	//Height of jump
	public float jumpHeight;

	//To allow fo slopes
	public float skin;

	//How fast player is forced down.
	public float jumpDown;

	public bool jumping = false;
	
	void Start(){
		// get the distance to ground
		distToGround = collider.bounds.extents.y;
	}


	//Is the player grounded?
	bool IsGrounded() {
		return Physics.Raycast(transform.position, -Vector3.up, distToGround + skin);
	}
	
	void FixedUpdate () {

		//Jump
		if (Input.GetKey(KeyCode.W) && IsGrounded()){
			rigidbody.AddForce(new Vector3(0, jumpHeight , 0),ForceMode.Impulse);
			jumping = true;

		}

		//Jump Further if Held Down?
		if (Input.GetKey(KeyCode.W) && jumping == true){
			rigidbody.AddForce(new Vector3(0, 1.5f * jumpHeight , 0),ForceMode.Impulse);
			
		}

		//If W is released, jump shorter distance
		if (Input.GetKeyUp (KeyCode.W) && jumping == true || IsGrounded ()) {
			jumping = false;		
		}

		//Push player downwards
		if (Input.GetKey (KeyCode.S) && IsGrounded() == false) {
			rigidbody.AddForce(0, -jumpHeight * jumpDown, 0);
			jumping = false;
		}
	}
}

The object can now overcome gravity, however the question is resolved. it was due to || is Grounded() on line 46.

using UnityEngine;
    using System.Collections;
     
    public class JumpInC : MonoBehaviour {
     
    private float distToGround;
     
    //Height of jump
    public float jumpHeight;
     
    //To allow fo slopes
    public float skin;
     
    //How fast player is forced down.
    public float jumpDown;
     
    public bool jumping = false;
     
    void Start(){
    // get the distance to ground
    distToGround = collider.bounds.extents.y;
    }
     
     
    //Is the player grounded?
    bool IsGrounded() {
    return Physics.Raycast(transform.position, -Vector3.up, distToGround + skin);
    }
     
    void FixedUpdate () {
     
    //Jump
    if (Input.GetKey(KeyCode.W) && IsGrounded()){
    rigidbody.AddForce(new Vector3(0, jumpHeight , 0),ForceMode.Impulse);
    jumping = true;
     
    }
     
    //Jump Further if Held Down?
    if (Input.GetKey(KeyCode.W) && jumping == true){
    rigidbody.AddForce(new Vector3(0, 1.5f * jumpHeight , 0),ForceMode.Impulse);
     
    }
     
    //If W is released, jump shorter distance
    if (Input.GetKeyUp (KeyCode.W) && jumping == true) {
    jumping = false;
    }
     
    //Push player downwards
    if (Input.GetKey (KeyCode.S) && IsGrounded() == false) {
    rigidbody.AddForce(0, -jumpHeight * jumpDown, 0);
    jumping = false;
    }
    }
    }